гиперссылка в gridview - PullRequest
0 голосов
/ 24 мая 2011

У меня есть гиперссылка в виде сетки, по которой я хочу, чтобы пользователи нажимали на нее, и она направляет их на определенную страницу, а также либо передает в первое поле вида сетки (идентификатор), либо удерживает ее в сеансе, предпочтительно в сеансе.

Ссылка является просто статическим текстом, поэтому независимо от того, на какую запись они нажимают, я хочу получить их на той же странице, но с этим идентификатором записи.

Просто не знаю, как добавить этона NavigateUrl гиперссылки.

Любые советы приветствуются, спасибо

Ответы [ 4 ]

1 голос
/ 24 мая 2011

Вы можете легко сгенерировать URL в разметке вашего GridView, не прибегая к коду.Что вам нужно сделать:

  1. В свойстве DataNavigateUrlFields вашего HyperLinkField введите имя столбца, который содержит ваш идентификатор.
  2. В DataNavigateUrlFormatString укажите путь к своей странице, плюс строку запроса, которую следующая страница будет использовать для получения идентификатора, но туда, куда должно идти значение, вместо этого укажите {0}.

например,

<asp:Hyperlink DataNavigateUrlFields="ProductId" DataNavigateUrlFormatString="details.aspx?id={0} />

Когда элемент управления отображается во время выполнения, вы обнаружите, что для каждой строки {0} заменяется значением столбца ProductId.

Подробнее см. String.Format и DataNavigateUrlFormatString .

0 голосов
/ 24 мая 2011

Используйте элемент управления HyperLink, а затем напишите функцию обработчика события для события RowDataBound, например:

protected void OnRowDataBound(object source, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink hyperLink = e.Row.FindControl("hyperLinkID") as HyperLink;

        // example, adjust this to your needs.
        hyperLink.NavigateUrl = "~/detail.aspx?id=" + DataBinder.Eval(e.Row.DataItem, "ID");     
    }
}
0 голосов
/ 24 мая 2011

Не уверен, почему вы взяли на себя управление сервером вместо тега HTML.

два способа сделать это.

1) если это статическая ссылка, просто добавьте префикс имени страницы и добавьте идентификатор в разметку. для бывших

<a  href='myPage.aspx<%#Eval("YourID")%>'><strong>Click me to navigate</strong></a>

2) присвоить тегу некоторый идентификатор и заставить его runat-сервер обрабатывать событие, связанное с данными, и привязывать к нему значение.

 protected void MyGridview_ItemDataBound(object sender, ListViewItemEventArgs e)
    {


 HtmlAnchor AncImage = e.Item.FindControl("AncImage") as HtmlAnchor;
AncImage.href="myPage.aspx"/id=" + DataBinder.Eval(e.Row.DataItem, "ID"); ;
//the id is the value that you want to append for redirection
}
0 голосов
/ 24 мая 2011
  1. Вы можете обработать событие Row_DataBound, чтобы найти элемент управления гиперссылкой и обновить свойство NavigateUrl.
  2. Вы можете добавить простой HTML-элемент управления Text в ссылку, он будет выдавать тот же HTML.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...