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; grdExport.DataBind();
Now the problem is in immediate window, when I’m checking, I’m getting following result:
?dsRecord.Tables.Columns.Count 16 ?dsRecord.Tables.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.
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.
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.
May be it is because you didnt place gridView on page?
Instead ?grdExport.Columns.Count. This count you get when you add columns collection in gridview at design time.
You have to use
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 🙂