【问题标题】: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";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        相关资源
        最近更新 更多