【问题标题】:How can I programatically change the HeaderText of my gridview columns in a nested gridview? (ASP.NET)如何以编程方式更改嵌套网格视图中网格视图列的标题文本? (ASP.NET)
【发布时间】:2010-07-31 19:49:09
【问题描述】:
我有一个 gridview,我希望能够以编程方式更改其列的 HeaderText(可能在 DataBinding 事件中)。我知道这通常可以通过以下方式实现:
myGrid.Columns[0].HeaderText = "My Header Text";
但是,有问题的网格视图实际上嵌套在另一个网格视图中(通过模板列)。所以我不能直接访问它。我正在尝试使用 FindControl 方法来访问它,但到目前为止这不起作用。有什么想法吗?
【问题讨论】:
标签:
asp.net
.net
gridview
【解决方案1】:
在父网格的 RowDataboud 事件中捕获该子网格,您可以在此处更改标题文本
假设 myGrid 是父网格,而 ChildGrid 是子网格..
OnRowDataBound="myGrid_RowDataBound"
protected void myGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridView ChildGrid = (GridView)e.Row.FindControl("ChildGrid");
ChildGrid.Columns[0].HeaderText = "My Header Text";
.
.
ChildGrid.Columns[n].HeaderText = "My Header Text";
}
}
【解决方案2】:
在最顶层 gv 的 itemdatabound 事件中捕获对嵌套 gv 的引用。然后,您可以尝试在嵌套的 gv 参考上更改您的标题。如果这不起作用,当 e.item.listitemtype 为 header 时,您始终可以有条件地在嵌套的 gv itemdatabound 事件中显示/隐藏占位符。
【解决方案3】:
使用绑定的 RowData 更改 Gridview 的标题文本:
答案是:
if (e.Row.RowType == DataControlRowType.DataRow){
Gridview1.Columns[0].HeaderText = "New Header Name";
}