2012-12-19 51 views
1

我有gridview模板字段包含超鏈接。我想根據我的SQL數據(綁定到網格的數據表)的特定字段中的某些邏輯來更改超鏈接的URL。我想我需要使用RowDataBound事件,檢查數據表的字段的值,並根據需要設置NavigateURL。如何更改RowDataBound上的gridview超鏈接的URL

如何在RowDataBound期間訪問數據表中列的值?

我可以找出它是不是一個頁眉或頁腳行,並訪問下面的代碼超鏈接控制。但在我的邏輯上畫空白來查看數據以確定要設置哪個URL。

if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     HyperLink hl = (HyperLink)e.Row.FindControl("hlStatus"); 
    } 

回答

0

這似乎是個伎倆。如果有更好的方法,請讓我知道。

DataRowView drv = (DataRowView)e.Row.DataItem; 
int iStatusCode = Convert.ToInt32(drv[myDatAccessLayer.Class.Property.ToString()]); 

它給我我想要在當前行中的列的值。

0

Eval method會給你你後。

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e) { 
    if (e.Row.RowType == DataControlRowType.DataRow) { 
     HyperLink hl = (HyperLink)e.Row.FindControl("hlStatus"); 
     hl.NavigateUrl = "http://www.google.com?q=" + DataBinder.Eval(e.Row.DataItem, "ColumnName"); 
    } 
} 
+0

謝謝,但我知道如何設置超鏈接的所有部分我想弄清楚當前行的列的底層數據是什麼,所以我可以做出決定。 網格綁定到具有行的DataTable。我需要訪問該綁定行的一列,以便我可以運行if或case邏輯。 – RichP

+0

尋求更接近你的解決方案我看到你有e.Row.DataItem在URL類型的末尾我需要什麼,但不是作爲URL的一部分。非常感謝! – RichP