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
 ... ETC。

在手风琴中,我希望它显示为:
标题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 想要创建一个新的手风琴窗格,并且每个记录的事件被命中两次(一次作为标题,一次作为项目)。我想使用数据绑定方法,因为我认为以后维护起来会容易得多(因为我需要事件连接)。

我无法取消 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 回答