2011-03-30 126 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