为什么我的GridView没有填充?

时间:2011-08-09 16:43:04

标签: c# asp.net gridview

如果我将autogenerate设置为true,它将填充。但我不需要那个。

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

        }
    }

3 个答案:

答案 0 :(得分:5)

您必须设置

AutoGenerateColumns="true"

或手动指定gridview列,如下所示:

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

你没有。

<强>更新

这就是您在后面的代码中执行此操作的方法:

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

答案 1 :(得分:0)

点击是否异步完成?如果没有,那么你基本上是在做一个帖子,但是你的数据在点击功能执行后就消失了,所以你的页面只是重新加载,没有数据。

答案 2 :(得分:0)

如果关闭“自动生成列”,则可以使用模板列

指定要显示的列

例如。

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