为什么GridView的列数为0

朋友们,我正在使用以下代码在我的asp.net应用程序中填充GridView。

GridView grdExport = new GridView(); DataSet dsRecord = objHelper.gReturnDataSet(CommandType.Text, strSql); grdExport.DataSource = dsRecord.Tables[0]; grdExport.DataBind(); 

现在问题是在即时窗口,当我检查时,我得到以下结果:

  ?dsRecord.Tables[0].Columns.Count 16 ?dsRecord.Tables[0].Rows.Count 37 ?grdExport.Rows.Count 37 ?grdExport.Columns.Count 0 

拜托,有谁可以告诉我为什么grdExport的列数为0?

GridView.Columns属性

检查一下:

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

如果您在网格中添加了列的列数更多,那么它将显示您添加的列的数量,而不是自动生成的列。

如果显示自动生成的列,则它将显示0.检查此标记:

       

现在它会将列的计数结果显示为1:
//在将列添加到gridview之前

 ?dtResult.Rows.Count 9 ?dtResult.Columns.Count 2 ?GridView1.Rows.Count 9 ?GridView1.Columns.Count 0 

将列添加到gridview后。

 ?GridView1.Columns.Count 1 

它显示counts = 0因为默认情况下自动生成的列为true如果添加手动列,则它将显示列计数。
如果你写grdExport.AutoGenerateColumns = false ; 然后在页面中不会呈现任何列。

可能是因为你没有在页面上放置gridView? 像这样:PlaceHolder1.Controls.Add(grdExport)

相反?grdExport.Columns.Count。 在设计时在gridview中添加列集合时获得的计数。 你必须使用grdExport.Rows [0] .Cells.Count

绑定数据后将设置GridViewColumn列。 所以只需显示MessageBox.Show即可找到列数。

 grdExport.AutoGenerateColumns = false; MessageBox.Show(grdExport.Columns.Count.ToString());