开发者

Why is my GridView not populating?

开发者 https://www.devze.com 2023-03-27 09:08 出处:网络
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:Gr

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)
        {

        }
    }


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);


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.


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>
0

精彩评论

暂无评论...
验证码 换一张
取 消