2011-05-24 173 views
0

我在gridview中有一個超鏈接,我希望用戶點擊它,並將它們引導到特定頁面,並且還要傳入gridview(ID)的第一個字段或將其保留在會話中,在會議中。gridview中的超鏈接

鏈接只是靜態文本,所以無論他們點擊了什麼記錄,我都希望將它們放到同一頁面,但是可以使用該記錄ID。

只是不知道如何將其添加到超鏈接的NavigateUrl。

知道的任何線索,謝謝

回答

1

您可以在不使用代碼的情況下輕鬆在GridView的標記中生成URL。你需要做的是:

  1. 在DataNavigateUrlFields您HyperLinkField字段的 財產,把 包含 您的ID列的名稱。
  2. 在 DataNavigateUrlFormatString,把 路徑到您的網頁,再加上 查詢字符串,下一個頁面將 使用獲得的ID,但其中 值應該去,把{0}來代替。

例如

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

當控制在運行時呈現時,你會發現,對於每一行,{0}由ProductID列的值替換。

請參閱String.FormatDataNavigateUrlFormatString瞭解更多詳情。

+0

感謝所有的答案傢伙 – DarkW1nter 2011-05-24 16:05:22

0
  1. 您可以處理Row_DataBound事件發現的超級鏈接控制和更新NavigateUrl屬性。
  2. 您可以添加簡單的html控件文本來鏈接,它會產生相同的html。
0

使用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

不知道爲什麼你已經採取了服務器控件,而不是HTML標記之前。

有兩種方法可以做到這一點。

1)如果它是一個靜態鏈接只是頁面名稱的前綴並在標記後面添加id。 爲前

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

2)給予一定的ID的標籤,並使其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 
}