我不確定你是否有興趣使用第三方控件,但是我有你的完全相同的需求並需要顯示數據分層次顯示重複值與單個可摺疊節點(如樹)。但是,Tree控件不受數據約束,仍然需要一定的編碼。但是這種基於非標準化數據的樹型構建可以使用DataBinding輕鬆完成。我使用的FlexGrid是DataBound DataTable,只需要幾行代碼即可基於第三方控件正確顯示您需要的內容。
我已經使用了ComponentOne FlexGrid控件,並使用其'SubTotal'功能來生成分層數據。我粘貼下面的代碼,以防萬一您有興趣使用ComponentOne FlexGrid。您可以下載演示副本並進行檢查。
// Showing master policy in GROUPS
// -----------------------------------------------------------------------------------
// set tree mode to show settings in GROUPS
flxAvailableSettings.Tree.Style = TreeStyleFlags.Simple;
// show outline tree on column 1.
flxAvailableSettings.Tree.Column = 0;
flxAvailableSettings.Cols[0].Visible = true;
flxAvailableSettings.Cols[0].Width = 15;
flxAvailableSettings.AllowMerging = AllowMergingEnum.Nodes;
// subtotal on column 1, outline level 0
flxAvailableSettings.Subtotal(AggregateEnum.None, 0, 0, 0, "{0}");
// use owner draw to suppress repeating group names in Non-Node rows
flxAvailableSettings.DrawMode = DrawModeEnum.OwnerDraw;
flxAvailableSettings.OwnerDrawCell += new C1.Win.C1FlexGrid.OwnerDrawCellEventHandler(flxAvailableSettings_OwnerDrawCell);
// done, autosize columns to finish
flxAvailableSettings.AutoSizeCols();
// -----------------------------------------------------------------------------------
private void flxAvailableSettings_OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e)
{
if (!flxAvailableSettings.Rows[e.Row].IsNode && flxAvailableSettings.Cols[e.Col].Name == "PolicyGroup")
e.Text = "";
}
的flxAvailableSettings.Subtotal(AggregateEnum.None,0,0,0, 「{0}」)線生成樹組,雖然我需要組對單個列,則可以使用基團上的多個列。只需在Subtotalling上提及他們的文檔示例。
希望這會有所幫助。
如果您的數據在數據庫中 - 您可能想要探索編寫SQL語句 – IMHO 2010-05-06 18:08:45
已經從存儲過程中檢索數據。我的目標是隻使用一個數據庫調用數據。 – 2010-05-06 18:11:32