0

アコーディオンにバインドしたい OLAP キューブがあります。

データを取得するための私の手順は、最終的に .net のフラットなデータ テーブルになるストアド プロシージャを使用することです。次のようになります。

ディメンション 1、メジャー 1、メジャー 2、メジャー 3
-------------------------------------------------- -
ヘッダー1、1、2、3
ヘッダー1、2、3、4
ヘッダー1、3、4、5
ヘッダー 2、4、5、6
ヘッダー2、6、7、8
ヘッダー3、7、8、9
 ...など

アコーディオンでは、次のように表示したいと思います。
ヘッダー1
1,2,3
2,3,4
3,4,5
ヘッダー2
4,5,6
6,7,8
ヘッダー3
7,8,9

ItemDataBound イベントでは、John が http://www.dotnetjohn.com/articles.aspx?articleid=283で行ったように、ラベル ヘッダーを作成し、各メジャーをデータグリッドに追加したいと考えました。

問題は、データ テーブル内の各アイテムに対して、.net が新しい accordionPane を作成しようとしており、イベントがレコードごとに 2 回 (ヘッダーとして 1 回、アイテムとして 1 回) ヒットすることです。データバインド メソッドを使用したかったのは、(イベントへの接続が必要なため) 今後の保守がはるかに簡単になると考えたからです。

itemdatabound イベントをキャンセルできません。また、accordion.datasource プロパティはデータビューのみを受け入れるため、データセットを渡して操作することはできません。

私の仮定は、データバインディングが適切なルートではないということです。

この問題を解決しようとする際に誰かが持っている洞察に感謝します。

前もって感謝します。

4

1 に答える 1

0

私はアコーディオンを扱ったことはありませんが、ネストされたグリッドとリピーターに対しては次のように機能します。適応できるかもしれません。

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

アコーディオンをデータバインドする方法で:

DataItem[] dataList = GetData();

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

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

次に、アコーディオンのItemDataBoundイベントで:

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

HeaderLabel.Text = group.Key;

GridControl.DataSource = group;
GridControl.DataBind();
于 2013-04-10T20:40:48.927 に答える