【问题标题】:How to change URL of hyperlink in gridview on RowDataBound如何在 RowDataBound 的 gridview 中更改超链接的 URL
【发布时间】:2012-12-07 01:06:30
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: gridview hyperlink rowdatabound


    【解决方案1】:

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

    【讨论】:

    • 谢谢,但我知道如何设置超链接的所有部分我试图找出当前行列的基础数据是什么,以便我做出决定。网格绑定到具有行的 DataTable。我需要访问该绑定行的一列,以便在其上运行 if 或 case 逻辑。
    • 更接近您的解决方案,我看到您在 URL 的末尾有 e.Row.DataItem 我需要的那种,但不是 URL 的一部分。还是谢谢!
    【解决方案2】:

    这似乎可以解决问题。如果有更好的方法请告诉我。

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

    它给了我当前行中我想要的列的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多