如何更改RowDataBound上gridview中超链接的URL

如何更改RowDataBound上gridview中超链接的URL,gridview,hyperlink,rowdatabound,Gridview,Hyperlink,Rowdatabound,我有一个包含hypelink的gridview和template字段。我想根据SQL数据(绑定到网格的数据表)特定字段中的某些逻辑更改超链接的URL。我想我需要使用RowDataBound事件,检查数据表字段的值,并根据需要设置NavigateURL 在RowDataBound期间,如何访问数据表中列的值 我可以确定它是否不是页眉或页脚行,并使用下面的代码访问超链接控件。但是在我的逻辑上画一个空白来查看数据,以确定要设置哪个URL if (e.Row.RowType == DataControl

我有一个包含hypelink的gridview和template字段。我想根据SQL数据(绑定到网格的数据表)特定字段中的某些逻辑更改超链接的URL。我想我需要使用RowDataBound事件,检查数据表字段的值,并根据需要设置NavigateURL

在RowDataBound期间,如何访问数据表中列的值

我可以确定它是否不是页眉或页脚行,并使用下面的代码访问超链接控件。但是在我的逻辑上画一个空白来查看数据,以确定要设置哪个URL

if (e.Row.RowType == DataControlRowType.DataRow)
    {
        HyperLink hl = (HyperLink)e.Row.FindControl("hlStatus");
    }
这会给你你想要的

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");
    }
}

这似乎奏效了。如果有更好的办法,请告诉我

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

它为我提供了当前行中所需列的值。

谢谢,但我知道如何设置超链接的所有部分。我正在尝试找出当前行列的基础数据,以便我可以做出决定。网格绑定到具有行的DataTable。我需要访问该绑定行的一列,以便在其上运行if或case逻辑。仔细查看您的解决方案,我发现您的URL末尾有e.row.DataItem,这是我需要的,但不是URL的一部分。尽管如此,还是要谢谢你!