动态超链接在gridview中不可见

时间:2014-04-25 08:26:47

标签: c# asp.net

我正在尝试使用下面的代码在动态网格视图的每一行上显示动态超链接,但它没有显示超链接。

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

1 个答案:

答案 0 :(得分:0)

您应该在RowCreated而不是RowDataBound中创建动态控件,因为此事件会在每次回发时触发,而RowDataBound仅在GridView数据绑定到它时触发&# 39; s DataSource

动态创建的控件必须在每个回发时使用与之前相同的ID重新创建,然后它们会在ViewState中保留其值,并且事件将正确触发。

所以你应该在RowCreated和"填充"它们位于RowDataBound(例如,HyperLink' s NavigateUrl,如果它来自数据源)。

但是,您应该在<{1}}数据绑定后添加动态控件 。所以这似乎毫无意义(无论GridView是什么):

e