2014-10-02 3 views
1

아래 코드를 사용하여 ASP.net gridview에 새 행을 추가하고 있습니다. 문제는 내가 만드는 모든 새로운 행이 비어 있다는 것입니다. 나는 줄에있는 세포들을 돌연변이 시켰는데 그들 대부분이 공백 ( ) 인 것을 발견했다. 어디에서나 다른 코드를 사용하여 보았습니다.하지만 모든 것이 나를 이끌 것입니다. 새로운 데이터 테이블을 만들고, 행을 추가하고, 데이터 테이블에 gridview 데이터 소스를 설정합니다. 나는이 컨트롤을 전에 12 번 사용했고 전에는 이것을 얻지 못했고, 그것은 매우 이상합니다.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 = 사실
  • 페이지 크기 =

나는 테이블의 데이터가 자동 생성 된 열로 이동 않습니다에 AutoGenerateColumns을 켜면 5. 그러나 열을 수동으로 만들 때가 아닙니다. 나는 수동으로 추가 된 열에 대해 템플릿 필드 열 유형을 사용하고 있습니다. 텍스트 필드 일 뿐이므로 더 나은 옵션을 찾을 수 없습니다.

도움이 되셨다면 ...

+0

내 게시물을 편집 gridview에 –

+0

나에게 당신의 .ASPX 코드를 제시해주십시오. – Paul

답변

0

왜 asp : TemplateField를 사용하고 있습니까? templatefield에 컨트롤을 추가하지 않았습니다.

TemplateField를 BoundField로 변경하면 문제가 해결됩니다.

등 :은 An 태그 안에 작성

 <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

+0

가장 환영합니다. –

0

봅니다

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