2013-04-10 31 views
1

我有一個我想綁定到手風琴的OLAP立方體。將平面數據源綁定到手風琴

我的步驟獲得的數據是通過如在.NET平坦的數據表,其最終的存儲過程;它看起來是這樣的:

 
dimension1, meaure1, measure2, measure3 
--------------------------------------------------- 
header1, 1, 2, 3 
header1, 2, 3, 4 
header1, 3, 4, 5 
header2, 4, 5, 6 
header2, 6, 7, 8 
header3, 7, 8, 9 
... etc. 

In the accordion, I would like it to be displayed as such: 
header1 
1,2,3 
2,3,4 
3,4,5 
header2 
4,5,6 
6,7,8 
header3 
7,8,9 

在ItemDataBound事件,我想創建一個標籤頭,然後將每個指標添加到DataGrid,就像約翰一樣在這裏:http://www.dotnetjohn.com/articles.aspx?articleid=283

問題是,在數據表中的每個項目,.NET要創建一個新的accordionPane和事件獲取每個記錄(一次爲標題,一次作爲一個項目)打了兩拳。我想使用數據綁定方法,因爲我認爲在路上維護會更容易(因爲我需要事件連接)。

我無法取消ItemDataBound事件。另外,accordion.datasource屬性只接受一個數據視圖,所以我不能傳入數據集並對其進行處理。

我的假設是數據綁定是不正確的路線。

我明白任何見解任何人有在試圖解決這個問題。

在此先感謝。

回答

0

我還沒有和手風琴的工作,但對於嵌套網格和中繼器下面的作品,也許你能適應。

public class DataItem 
{ 
    public string Header { get; set; } 
    public string Measure1 { get; set; } 
    public string Measure2 { get; set; } 
    public string Measure3 { get; set; } 
} 

在你的方法進行數據綁定手風琴:在手風琴的ItemDataBound事件

DataItem[] dataList = GetData(); 

IEnumerable<IGrouping<string, DataItem>> groupedList = dataList.GroupBy(x => x.Header); 

AccordionControl.DataSource = groupedList; 
AccordionControl.DataBind(); 

然後:

var group = (IGrouping<string, DataItem>)e.Item; 

HeaderLabel.Text = group.Key; 

GridControl.DataSource = group; 
GridControl.DataBind(); 
+0

呀;訣竅是創建一個特殊對象的數組並將其設置爲您的數據源。謝謝你的提示! – user1310989 2013-04-13 00:24:02