bronco88
bronco88

Reputation: 1

Why is my GridView not populating?

It will populate if I set autogenerate to true. But I do not need that.

<asp:GridView runat="server" ID="Gridview2" Visible="true" AutoGenerateColumns="false"></asp:GridView>


protected void submitButton_Click(object sender, EventArgs e)
    {
        Database db = DatabaseFactory.CreateDatabase("ConnectionString");
        DataTable dt = new DataTable();
        DataColumn dc;
        DataSet ds = new DataSet();

        try
        {
            DbCommand dbCommand = db.GetStoredProcCommand("sel_ResultByID_p");
            db.AddInParameter(dbCommand, "@pID", DbType.Int16, _id);
            ds = db.ExecuteDataSet(dbCommand);

            dc = new DataColumn();
            dc.ColumnName = "FullName";
            dt.Columns.Add(dc);

            DataRow dr;
            dr = dt.NewRow();
            dr["FullName"] = ds.Tables[0].Rows[0]["FullName"];

            dt.Rows.Add(dr);

            Gridview2.DataSource = ds;
            Gridview2.DataBind();
        }

        catch(Exception ex)
        {

        }
    }

Upvotes: 0

Views: 2181

Answers (3)

Adriano Carneiro
Adriano Carneiro

Reputation: 58595

You have to either set

AutoGenerateColumns="true"

or specify the gridview columns manually, like this:

<asp:GridView runat="server" ID="Gridview2" Visible="true" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="FullName" HeaderText="Full Name" />
    </Columns>
</asp:GridView>

You are doing none.

Update

This is how you'd do it in the code behind:

BoundField bf = new BoundField();
bf.DataField = "YourFieldName";
bf.HeaderText = "Your Header";
Gridview2.Columns.Add(bf);

Upvotes: 5

Xiphos
Xiphos

Reputation: 338

If you turn off Autogeneration of columns, you can specify which columns you want to display by using template columns

For Example.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
   DataKeyNames="EmployeeID" DataSourceID="ObjectDataSource1"> 
<Columns> 
 <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />     
 <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> 
 <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
 <asp:BoundField DataField="HireDate" HeaderText="HireDate" SortExpression="HireDate" /> 
</Columns> 
</asp:GridView>

Upvotes: 0

evasilchenko
evasilchenko

Reputation: 1870

Is the click done asynchronously? If not then you are basically ending up doing a post but your data is gone after the click function executes and so your page is just reloaded with no data again.

Upvotes: 0

Related Questions