带有数据表的数据绑定后,GridView Column.Count始终为0

use*_*838 3 c# datatable gridview

我试图有条件地显示/隐藏GridView列.

我正在创建一个动态DataTable,然后将其绑定到GridView

后来,在帖子后面,我正在检查条件并希望显示/隐藏GridView的几列,但Column.Count总是0!

我的代码如下 - ASPX页面

<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)

.CS

 protected void Button1_Click(object sender, EventArgs e)
{
   DataTable aDT = new DataTable()
   aDT = createDataTable();   //datatable has 21 columns

   GridView1.DataSource = aDT;
   GridView1.DataBind();

   int temp = GridView1.Columns.Count;   //always 0
}
Run Code Online (Sandbox Code Playgroud)

不确定代码有什么问题

Far*_*yev 6

如果将autogeneratedcolumns属性设置为,true 则计数将始终显示为0.

来自MSDN

Columns属性(集合)用于存储在GridView控件中呈现的所有显式声明的列字段.您还可以使用Columns集合以编程方式管理列字段的集合.

在您的情况下,您没有明确声明您的列.因此,如果GridView包含至少一行,则可以在Click方法内外获得列数:

单元格中的单元格数=列数.

if(GridView1.Rows.Count>0)
    int temp = GridView1.Rows[0].Cells.Count;
Run Code Online (Sandbox Code Playgroud)

或者你可以通过@TimSchmelter评论的Click方法从DataTable获取计数:

int temp = aDT.Columns.Count
Run Code Online (Sandbox Code Playgroud)