如何在嵌套的gridview中以编程方式更改gridview列的HeaderText? (ASP.NET)

时间:2010-07-31 19:49:10

标签: asp.net .net gridview

我有一个gridview,我希望能够以编程方式更改它的列的HeaderText(可能在DataBinding事件中)。我知道这通常可以通过以下方式实现:

myGrid.Columns[0].HeaderText = "My Header Text";

但是,有问题的gridview实际上嵌套在另一个gridview中(通过模板列)。所以我无法直接访问它。我正在尝试使用FindControl方法来访问它,但到目前为止还没有用。有什么想法吗?

3 个答案:

答案 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";
}