回发后保留Gridview超链接列

时间:2019-03-28 08:39:32

标签: c# asp.net hyperlink postback

我在(gridView_RowDataBound)后面的代码中创建了一个超链接Gridview列,该列在postabk上变为纯文本。超链接的文本和NavigateUrl是动态生成的gridview的cell [0]的值。

` protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                HyperLink link = new HyperLink();
                link.Target = "blank";
                link.Text = e.Row.Cells[0].Text;
                link.NavigateUrl = e.Row.Cells[0].Text;
                e.Row.Cells[0].Controls.Add(link);

            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }`

我试图对RowCreated事件做同样的事情,以确保超链接保留在回发中。但是Gridview中的数据丢失了,所以我无法以相同的方式访问它。

1 个答案:

答案 0 :(得分:0)

对于面临相同问题的任何人,这就是我最终在页面的每次加载(postBack)上所做的

protected void GridViewDisplayDocument_RowCreated()
{
   var rowCount = GridViewDisplayDocument.Rows.Count;
   for (int i = 0; i < rowCount; i++)
   {
      var url = GridViewDisplayDocument.Rows[i].Cells[0].Text;
      if (url != string.Empty)
      {
         HyperLink link = new HyperLink();
         link.Target = "blank";
         link.Text = url;
         link.NavigateUrl =  url;

         GridViewDisplayDocument.Rows[i].Cells[0].Controls.Add(link);
       }
    } 
}