How To Fix Column Doubling in an GridView - with Code Sample - Digital Tool Factory blog

How To Fix Column Doubling in an GridView – with Code Sample

Chocolate Tools
The Problem: You are trying to create an GridView that automatically populates on any dataset, as well as automatically sorts, but for some reason whenever you click the headers to sort the GridView, the data doubles.

The Cause: I originally omitted crucial line

in the code sample below.    For whatever reason I got it stuck in my head that the data was doubling, not the columns.

The Solution: Just add in the .Clear() line of code to the Gridview population routine and the problem is solved.

The Code:

All the code you need in the .aspx page:
<asp:GridView ID=”gv” AllowSorting=”true” runat=”server” AutoGenerateColumns=”False” onsorting=”gv_Sorting”></asp:GridView>

All the code you need to initially populate the GridView in the .cs pages

    private DataSet GenDataSet()
        // Delcare a DataSet and Table
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();
        DataRow dtRow;

        dt.Columns.Add("Legal Name");

        dtRow = dt.NewRow();
        dtRow["MNumber"] = "A"; ;
        dtRow["Legal Name"] = "A";
        dtRow["Email"] = "A";
        dtRow["Level"] = "A";

        dtRow = dt.NewRow();
        dtRow["MNumber"] = "B"; ;
        dtRow["Legal Name"] = "B";
        dtRow["Email"] = "B";
        dtRow["Level"] = "B";

        dtRow = dt.NewRow();
        dtRow["MNumber"] = "C"; ;
        dtRow["Legal Name"] = "C";
        dtRow["Email"] = "C";
        dtRow["Level"] = "C";

        dtRow = dt.NewRow();
        dtRow["MNumber"] = "D"; ;
        dtRow["Legal Name"] = "D";
        dtRow["Email"] = "D";
        dtRow["Level"] = "D";

        dtRow = dt.NewRow();
        dtRow["MNumber"] = "E"; ;
        dtRow["Legal Name"] = "E";
        dtRow["Email"] = "E";
        dtRow["Level"] = "E";


        //note this is columns
        foreach (DataColumn col in ds.Tables[0].Columns)
            BoundField bfNew = new BoundField();
            //Initalize the DataField value.
            bfNew.DataField = col.ColumnName;
            //Initialize the HeaderText field value.
            bfNew.HeaderText = col.ColumnName;
            bfNew.SortExpression = col.ColumnName;
            //Add the newly created bound field to the GridView.
        return ds;

That’s it!

Creative Commons License photo credit: JanneM


This post originally appeared on the Stronico blog – with the absorption of Stronico into Digital Tool Factory this post has been moved to the Digital Tool Factory blog


Written By Steve French


Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright 2011 Digital Tool Factory. All Rights Reserved. Powered by raw technical talent. And in this case, WordPress.