2012-03-22 62 views
0

朋友,我使用下面的代码在我的asp.net应用程序中填充GridView。为什么GridView的列数为0

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 

请,谁能告诉我,为什么列数为0,grdExport?

+1

*自动生成的绑定列字段不会添加到Columns集合中* [因此计数为零](http://msdn.microsoft.com/zh-cn/ -us/library/system.web.ui.webcontrols.gridview.autogeneratecolumns.aspx) – V4Vendetta 2012-03-22 06:51:05

+0

如果您要计数它将与您分配的源表相同,** 16 ** – V4Vendetta 2012-03-22 06:53:45

+0

@ V4Vendetta非常感谢。我不知道它.. – Sukanya 2012-03-22 06:56:51

回答

1

GridView.Columns Property

检查:

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

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

如果你表现出自动生成列,然后它会显示0 检查此标记:

<asp:GridView ID="GridView1" runat="server"> 
      <Columns> 
       <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" /> 
      </Columns> 
     </asp:GridView> 

,我们将会看到你列的结果来算,以1:
//之前添加列的GridView

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

将列添加到gridview后。

?GridView1.Columns.Count 
1 
1

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

0

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

+0

您的解决方案有助于获取行中的数据,而不是标题。不管怎么说,还是要谢谢你。 – Sukanya 2012-03-22 07:32:15

+0

对于标题“HeaderRow.Cells。计数“在那里。 – 2012-03-22 08:30:10

+0

好的,谢谢你的帮助。 – Sukanya 2012-03-22 09:54:07

0

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

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

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