2011-03-30 68 views
0

我有一个gridview1这是父GridView和我想要插入另一gridview2这孩子gridview的父gridview的问题与嵌套gridview的asp.net/C#

的每一行内这是代码。 ASPX

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
<asp:GridView ID="GridView1" runat="server"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:GridView ID="gridView2" runat="server"> 
       </asp:GridView> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

这是我的RowDataBound事件中添加的代码,我只是结合与被过滤的数据根据​​各行的发票号

的内容ArrayList中gridview
protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      foreach (GridViewRow gridviewrow in GridView1.Rows) 
      { 
       gridView2.AutoGenerateColumns = true; 
       String x = gridviewrow.Cells[1].Text; 
       softwareTitlesList = SoftwareListRetrieve(); 
       ArrayList titles = new ArrayList(); 
       foreach (SoftwareTitles softwareTitle in softwareTitlesList) 
       { 
        if (softwareTitle.InvoiceNumber.Contains(x)) 
         titles.Add(softwareTitle.SoftwareTitle); 
       } 
       gridView2.DataSource = titles; 
       gridView2.DataBind(); 
      } 
     } 
    } 

但似乎没有发生。

请帮我

感谢预期

回答

0

RowDataBound事件时,火行绑定数据。你必须征求意见不喜欢......

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     System.Data.DataRowView dr = (System.Data.DataRowView)e.Row.DataItem; 

      gridView2.AutoGenerateColumns = true; 
      String x = dr["yourColumnName"].ToString(); 
      softwareTitlesList = SoftwareListRetrieve(); 
      ArrayList titles = new ArrayList(); 
      foreach (SoftwareTitles softwareTitle in softwareTitlesList) 
      { 
       if (softwareTitle.InvoiceNumber.Contains(x)) 
        titles.Add(softwareTitle.SoftwareTitle); 
      } 
      GridView gridView2 = (GridView)e.Row.Findcontrol("gridView2");//add this 
      gridView2.DataSource = titles; 
      gridView2.DataBind(); 

    } 
} 

编辑:

GridView gridView2 = (GridView)e.Row.Findcontrol("gridView2");// add this line 
+0

我现在有一个新问题,它给我错误“名称'gridView2'在当前上下文中不存在”是否还有其他任何我需要添加以便能够访问.aspx.cs文件 – 2011-03-30 11:34:11

+0

protected void GridView1_RowDataBound(Object sender,GridViewRowEventArgs e)即使这种方法没有被调用!问题是什么 ? – 2011-03-30 11:54:54

+0

你必须在你的Gridview中添加事件 2011-03-30 11:57:18

1

的一个问题是,你的RowDataBound事件中这样做。这将在GridView1中的每一行中被触发,该行绑定到数据源。您基本上每次都重置DataSource的GridView2。尝试使用gridview的DataBound事件。

+0

你可以把你的想法编码。这对我来说会更清楚。请 !!感谢预期! – 2011-03-30 11:27:18

+0

但是如果你把它放在一个DataBound中,那么你将如何遍历每一行更新GridView2并使其刷新每行?我试过这个,它使得所有的GridView2数据看起来与第一行的GridView2相同。 – Fandango68 2013-07-02 06:36:56