我有一个gridview,我希望能够以编程方式更改它的列的HeaderText(可能在DataBinding事件中)。我知道这通常可以通过以下方式实现:
myGrid.Columns[0].HeaderText = "My Header Text";
但是,有问题的gridview实际上嵌套在另一个gridview中(通过模板列)。所以我无法直接访问它。我正在尝试使用FindControl方法来访问它,但到目前为止还没有用。有什么想法吗?
答案 0 :(得分:3)
在父网格的RowDataboud事件中捕获该子网格,在这里您可以更改标题文本 假设myGrid是Parent Grid,ChildGrid是Child grid ..
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";
}
}
答案 1 :(得分:0)
在最顶层的gv的itemdatabound事件中捕获对嵌套gv的引用。然后,您可以尝试在嵌套的gv引用上更改标头。如果没有这个技巧,当e.item.listitemtype是标题时,你总是可以在嵌套的gv itemdatabound事件中有条件地显示/隐藏占位符。
答案 2 :(得分:-1)
使用RowData绑定更改Gridview的标题文本:
答案是:
if (e.Row.RowType == DataControlRowType.DataRow){
Gridview1.Columns[0].HeaderText = "New Header Name";
}