2014-10-02 40 views
1

我正在使用下面的代码将新行添加到ASP.net gridview。问题是我创建的每一个新行都是空白的。我穿过排中的单元格,发现其中大部分都是空格( )。我到处寻找不同的代码片段,但是所有的东西都让我:创建一个新的数据表,为它添加一行,将gridview数据源设置为数据表。我之前使用过这个控件十几次,之前从未得到过,这很奇怪。Gridview空行问题

类电平可变

public partial class DMREntry : System.Web.UI.Page 
{ 
    private DataTable _Parts 
    { 
     get { return (DataTable)ViewState["Parts"]; } 
     set { ViewState.Add("Parts", value); } 
    } 
    ... 

添加行代码。请注意,我的文本框和我的gridview都在更新面板中。

 if (_Parts == null) 
     { 
      _Parts = new DataTable(); 
      _Parts.Columns.Add("Part No"); 
      _Parts.Columns.Add("Qty"); 
      _Parts.Columns.Add("Description"); 
      _Parts.Columns.Add("Vendor"); 
      _Parts.Columns.Add("Vendor Part"); 
      _Parts.Columns.Add("Cost"); 
      _Parts.Columns.Add("PO Number"); 
      _Parts.Columns.Add("Delivery Date"); 
      _Parts.Columns.Add("Total Cost"); 
     } 

     DataRow dr = _Parts.NewRow(); 

     dr["Part No"] = txtPartNo.Text; 
     dr["Qty"] = txtQty.Text; 
     dr["Description"] = txtDescription.Text; 
     dr["Vendor"] = txtVendor.Text; 
     dr["Vendor Part"] = txtVendorPart.Text; 
     dr["Cost"] = txtCost.Text; 
     dr["PO Number"] = txtPONumber.Text; 
     dr["Delivery Date"] = txtDeliveryDate.Text; 
     dr["Total Cost"] = txtTotalCost.Text; 
     // At this point, DR has the correct values 

     _Parts.Rows.Add(dr); 
     _Parts.AcceptChanges(); 
     gvParts.DataSource = _Parts; 
     gvParts.DataBind(); 

     upGrid.Update(); 

GridView的标记:

`<asp:GridView ID="gvParts" runat="server" AutoGenerateColumns="False" PageSize="5" 
    Width="787px" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" 
    BorderWidth="1px" CellPadding="3" 
      onselectedindexchanged="gvParts_SelectedIndexChanged1" AllowPaging="True" 
      AllowSorting="True"> 
     <Columns> 
      <asp:TemplateField HeaderText="Part No"></asp:TemplateField> 
      <asp:TemplateField HeaderText="Qty"></asp:TemplateField> 
      <asp:TemplateField HeaderText="Description"></asp:TemplateField> 
      <asp:TemplateField HeaderText="Vendor"></asp:TemplateField> 
      <asp:TemplateField HeaderText="Vendor Part"></asp:TemplateField> 
      <asp:TemplateField HeaderText="Cost"></asp:TemplateField> 
      <asp:TemplateField HeaderText="PO Number"></asp:TemplateField> 
      <asp:TemplateField HeaderText="Delivery Date"></asp:TemplateField> 
      <asp:TemplateField HeaderText="Total Cost"></asp:TemplateField> 
      <asp:CommandField ButtonType="Button" ShowEditButton="True" /> 
      <asp:CommandField ButtonType="Button" ShowDeleteButton="True" /> 
     </Columns> 
     <FooterStyle BackColor="White" ForeColor="#000066" /> 
     <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" /> 
     <RowStyle ForeColor="#000066" /> 
     <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" /> 
     <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
     <SortedAscendingHeaderStyle BackColor="#007DBB" /> 
     <SortedDescendingCellStyle BackColor="#CAC9C9" /> 
     <SortedDescendingHeaderStyle BackColor="#00547E" /> 
    </asp:GridView>` 

令我:

empty gridview

我的网格属性是默认的,除了:

  • 的AutoGenerateColumns =假
  • AllowPaging =真
  • AllowSorting =真
  • 每页= 5

如果我打开,从表中的数据并不进入自动生成列的AutoGenerateColumns。但不是当我手动创建列时。我正在使用手动添加列的模板字段列类型。他们只是文本字段,我找不到更好的选择。

任何帮助赞赏...

+0

请出示您的.aspx代码编辑我的帖子的GridView – 2014-10-02 13:10:15

+0

。 – Paul 2014-10-02 13:19:40

回答

0

为什么你使用asp:TemplateField?您没有在模板字段中添加任何控件。

只需将TemplateField更改为BoundField,即可解决您的问题。

像:

 <asp:BoundField DataField="Part No" HeaderText="Part No" /> 
     <asp:BoundField DataField="Qty" HeaderText="Qty" /> 
     <asp:BoundField DataField="Description" HeaderText="Description" /> 
     <asp:BoundField DataField="Vendor" HeaderText="Vendor" /> 
     <asp:BoundField DataField="Vendor Part" HeaderText="Vendor Part" /> 
     <asp:BoundField DataField="Cost" HeaderText="Cost" /> 
     <asp:BoundField DataField="PO Number" HeaderText="PO Number" /> 
     <asp:BoundField DataField="Delivery Date" HeaderText="Delivery Date" /> 
     <asp:BoundField DataField="Total Cost" HeaderText="Total Cost" /> 
+0

这工作。我被“BoundField”弄糊涂了,并不认为这是正确的字段类型。具体来说,设置DataField属性使数据显示。谢谢。 – Paul 2014-10-02 13:36:30

+0

你最欢迎 – 2014-10-02 13:37:34

0

尝试的标签内创建

<asp:TemplateField HeaderText="Example"> 
      <ItemTemplate> 
       <%# Eval("TestColumn") %> 
      </ItemTemplate> 
</asp:TemplateField>