2014-10-02 61 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>