Why column count is 0 for GridView

Friends, I’m populating a GridView in my asp.net application using following code.

    GridView grdExport = new GridView();
    DataSet dsRecord = objHelper.gReturnDataSet(CommandType.Text, strSql);

    grdExport.DataSource = dsRecord.Tables[0];
    grdExport.DataBind();

Now the problem is in immediate window, when I’m checking, I’m getting following result:

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

Please, can anyone tell me why Column count is 0 for grdExport?

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

GridView.Columns Property

Check this:

The Columns property (collection) is used to store all the explicitly
declared column fields that get rendered in the GridView control. You
can also use the Columns collection to programmatically manage the
collection of column fields.

If you have more columns to your added columns in your grid then it will show count of those columns which you have added not the auto generated columns.

If you show auto generated columns then it will show 0.
Check this markup:

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

Now it will Show your result of columns’s count to 1:
//Before adding column to gridview

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

After Adding column to gridview.

?GridView1.Columns.Count
1

Solution 2

It shows the counts = 0 because by default autogenerated columns is true If you add manual colums then it will shows the column counts.
If you write grdExport.AutoGenerateColumns = false; then no columns would rendered in page.

Solution 3

May be it is because you didnt place gridView on page?
like this:PlaceHolder1.Controls.Add(grdExport)

Solution 4

Instead ?grdExport.Columns.Count. This count you get when you add columns collection in gridview at design time.
You have to use
grdExport.Rows[0].Cells.Count

Solution 5

Your GridViewColumn Column will be set after binding your data. So just show a MessageBox.Show to find the column count.

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

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply