动态超链接在网格视图中不可见
本文关键字:视图 超链接 网格 动态 | 更新日期: 2023-09-27 17:59:57
我试图使用下面的代码在动态网格视图的每一行上显示动态超链接,但它没有显示超链接。
gvdates.DataSource = xyz;
var m = tool.ToolsID;
HyperLink hp = new HyperLink();
hp.Text = e.Row.Cells[i].Text;
hp.NavigateUrl = "~/OutageInfo.aspx?name=m;" + hp.Text;
e.Row.Cells[i].Controls.Add(hp);
gvdates.DataBind();
e.Row.Cells[i].Controls.Add(gvdates);
您应该在RowCreated而不是RowDataBound中创建动态控件,因为此事件在每次回发时都会触发,而RowDataBound
只有在GridView
数据绑定到其DataSource
时才会触发。
动态创建的控件必须在每次回发时使用与以前相同的ID重新创建,然后它们才能在ViewState中保留其值,事件才能正确激发。
因此,您应该在RowCreated
中创建它们,并在RowDataBound
中"填充"它们(例如,HyperLink的NavigateUrl
,如果它来自数据源)。
但是,您应该在数据绑定GridView
之后添加动态控件。所以这似乎毫无意义(不管e
是什么):
e.Row.Cells[i].Controls.Add(hp);
gvdates.DataBind();