2012-01-27 18 views
0

我有一个嵌套的gridview由于某种原因正在创建一个重复的列。列中的数据是正确的,但是这些列中有两个而不是一个。我无法摆脱它,我不知道它为什么要创建重复的列。 HTML标记仅显示一个网格,但显示两个网格。我也确保数据绑定只发生一次,而且是。有什么想法吗?嵌套的GridView创建一个额外的列

ASPX:

<div id="divSource" runat="server" align="center"> 
    <asp:GridView ID="Source" runat="server" AutoGenerateColumns="False" DataKeyNames="sourceLineItem" CSSClass="viewSourceGrid" OnRowDataBound="PopulateDateCodes"> 
     <Columns> 
      <asp:TemplateField InsertVisible="False" HeaderStyle-Width="70px"> 
       <ItemTemplate> 
        <asp:Label CssClass="sourceHeader" runat="server" Text= '<%# "Source: " + (Container.DataItemIndex + 1).ToString() %>'> </asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:BoundField DataField="nfdBroker" HeaderText="NFD/Broker" InsertVisible="False" ReadOnly="True" SortExpression="nfdBroker" /> 
      <asp:BoundField DataField="locationDescription" HeaderText="Material Location" SortExpression="materialLocation" /> 
      <asp:BoundField DataField="origPkg" HeaderText="Original Packaging?" SortExpression="origPkg" /> 
      <asp:BoundField DataField="oemCC" HeaderText="OEM C of C? " InsertVisible="False" ReadOnly="True" SortExpression="oemCC" /> 
      <asp:BoundField DataField="minBuyQty" HeaderText="Minimum Buy Qty" SortExpression="minBuyQty" /> 
      <asp:BoundField DataField="deliveryInfo" HeaderText="Delivery" SortExpression="delUOM" /> 

      <asp:TemplateField InsertVisible="False" HeaderText="Date Codes" > 
       <ItemTemplate> 
        <asp:GridView ID="DateCodeGrid" runat="server" InsertVisible="False" CSSClass="viewSourceGrid" ShowHeader="false"> 
         <Columns> 
          <asp:BoundField DataField="dateCode" HeaderText="DateCode" ReadOnly="true" /> 
         </Columns> 
        </asp:GridView> 
       </ItemTemplate> 
      </asp:TemplateField> 

     </Columns> 
    </asp:GridView> 
</div> 

aspx.cs:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 

public partial class Controls_ViewSource : System.Web.UI.UserControl 
{ 
    //Set the Source Line Item 
    public int SourceLineItem { get; set; } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     this.SourceLineItem = SourceLineItem; 
     RequestDB db = new RequestDB(); 
     DataSet sources = db.GetSource(int.Parse(Request.QueryString["requestNumber"]), SourceLineItem); 
     Source.DataSource = sources; 
     Source.DataBind(); 

    } 

    protected void PopulateDateCodes(object sender, GridViewRowEventArgs e) 
    { 
     RequestDB db = new RequestDB(); 
     GridViewRow row = e.Row; 
     //int sourceLineItem = int.Parse(Source.DataKeys[row.RowIndex].Value.ToString()); 

     if (row.RowType == DataControlRowType.DataRow) 
     { 
      Response.Write("One <br>"); 
      // Find the nested grid view 
      GridView nested = (GridView)row.FindControl("DateCodeGrid"); 
      //Figure out how to get the sourceLineItem 
      DataSet dateCodes = db.GetDateCodes(71); 
      nested.DataSource = dateCodes; 
      nested.DataBind(); 
     } 
    } 
} 
+0

也许你可以检查 “演练:创建一个嵌套GridView控件” HTTP ://msdn.microsoft.com/en-us/library/aa992038(v = VS.80)的.aspx – 2012-01-27 02:43:38

回答

1

组的AutoGenerateColumns = “假”,在嵌套的GridView