2012-11-02 50 views
2

我開始與ASP.NET,我想知道,如果有任何「智能」的方式顯示數據從DataTable組中?
想象一下下面的例子:我從SQL到數據表分組獲取數據和alredy分類:嵌套中繼器 - 分組數據

protected void Page_Load(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    dt.Columns.Add("parent", typeof(string)); 
    dt.Columns.Add("child", typeof(string)); 
    dt.Rows.Add("AAA", "111"); 
    dt.Rows.Add("AAA", "222"); 
    dt.Rows.Add("AAA", "333"); 
    dt.Rows.Add("BBB", "444"); 
    dt.Rows.Add("BBB", "555"); 
    dt.Rows.Add("CCC", "666"); 
    dt.Rows.Add("CCC", "777"); 
    dt.Rows.Add("CCC", "888"); 

    repeaterParent.DataSource = dt; 
    repeaterParent.DataBind(); 
} 

,我想頁面上顯示它們象下面這樣:
enter image description here

我試着使用嵌套該轉發器:

<asp:Repeater ID="repeaterParent" runat="server"> 
    <ItemTemplate> 
     <b><%# DataBinder.Eval(Container.DataItem, "parent") %></b> 
     <br /> 
     <asp:repeater id="repeaterChild" runat="server"> 
      <itemtemplate> 
        - <%# DataBinder.Eval(Container.DataItem, "child") %> <br /> 
      </itemtemplate> 
     </asp:repeater> 
    </ItemTemplate> 
</asp:Repeater> 

當然這是行不通的 - 結果如下 - 它既不分組也正在顯示一個孩子:
enter image description here

它是如何做到的 - 控件不必是中繼器 - 它可以是列表視圖,項目符號列表或類似的東西。

最好,如果有一些「聰明」的方式 - 所以我只是將數據表綁定到數據源,並且控件爲我做了其餘的(分組)。我寧願避免將數據源表拆分爲兩個不同的來源,或者爲每個父項目進行SQL查詢,並使用ItemDataBound事件來玩 - 只要有可能。如果沒有 - 你能告訴我任何這樣做嗎? .NET版本:4.0

最好的問候,
馬辛

- 編輯:
我發現下面的解決方案,但是,我真的不喜歡它,因爲每個昂貴的過濾源表項目,我不知道它將如何與大型源數據表。我會很高興地聽到,如果有一個更好的解決方案:

protected void repeaterParent_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    DataRowView drv = (DataRowView)e.Item.DataItem; 
    string parent = drv["parent"].ToString(); 

    dt.DefaultView.RowFilter = string.Format("[parent]='{0}'", parent); 
    DataTable dtChild = dt.DefaultView.ToTable(true, "child"); 

    Repeater repeaterChild = (Repeater)e.Item.FindControl("repeaterChild"); 
    repeaterChild.DataSource = dtChild; 
    repeaterChild.DataBind(); 

} 
+0

我只想讓從數據表手動子對象的對象的列表,然後綁定到這嵌套的中繼器。會有開銷,但少於篩選每個元素。 –

回答

0

你是在正確的軌道上,但歐都只有一個數據源,這是第一個轉發器的輸入。

您需要將第二個數據源添加到第二個(嵌套)中繼器。例如一個返回第一個數據源中實際父項的子項的函數。

Nested Repeaters in ASP.NET

+0

謝謝您的回答,但我之前看到過這篇文章,但是我不明白ColOfCol在您提出的鏈接中意味着什麼。此外,它不會按照我需要的方式分組數據,是嗎? – mj82