2011-08-09 122 views
0

如果我将autogenerate设置为true,它将会填充。但我不需要那个。为什么我的GridView无法填充?

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

     } 
    } 
+0

我能想到的唯一的事情就是在添加行之前设置DataSource *。我有几乎相同的代码(除此之外)哪些工作。目前看不出为什么 - 因此评论而不是答案。 – ChrisF

回答

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

我需要以编程方式指定列吗?我怎样才能做到这一点? – bronco88

+0

在ASPX中,添加'Columns'标签,如示例所示。请记住,这仅仅是一个例子,根据你的需求来调整它,因为我不可能知道你的'sel_ResultByID_p'带回了什么。 –

+0

我需要在代码隐藏中这样做。我怎样才能做到这一点? – bronco88

0

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

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

Bah,抱歉原始格式,不知道那里发生了什么。 – Xiphos