关于CellSet转DataTable的改进方案

来源:互联网 发布:心脑血管疾病数据2016 编辑:程序博客网 时间:2024/05/16 23:36

1.关于CellSet转DataTable的改进方案
2.FusionChart对MDX查询结果的数据展示案例
3.FusionCharts

/// <summary>        /// 将CellSet转化成DataTable(包括所有维度)        /// </summary>        /// <param name="cs">CellSet</param>        /// <returns></returns>        public DataTable ToDataTable(CellSet cs)        {            DataTable dt = new DataTable();            dt.TableName = "ResultTable";            DataColumn dc = null;            DataRow dr = null;            //生成数据列对象            //多个维度转化成列            for (int col = 0; col < cs.Axes[1].Set.Hierarchies.Count; col++)            {                dc = new DataColumn();                //下面的代码会报错:"The connection is not open.” 获取层次结构的维度名时需要连接Cube才可以!                //dt.Columns.Add(new DataColumn(cs.Axes[1].Set.Hierarchies[col].ParentDimension.Name));                dt.Columns.Add(new DataColumn("Dimension" + col.ToString()));            }            int index = 0;            foreach (Position p in cs.Axes[0].Positions)            {                dc = new DataColumn();                string name = "";                foreach (Member m in p.Members)                {                    name += m.Caption + "-";                }                if (name.Length > 0)                {                    name = name.Substring(0, name.Length - 1);                }                //这里防止维度成员或度量值重名而需要容错处理                try                {                    dc.ColumnName = name;                    dt.Columns.Add(dc);                }                catch (System.Exception ex)                {                    dc.ColumnName = name + index.ToString();                    dt.Columns.Add(dc);                }                index++;            }            //添加行数据            int pos = 0;            foreach (Position py in cs.Axes[1].Positions)            {                dr = dt.NewRow();                //维度描述列数据                int cols = 0;                foreach (Member m in py.Members)                {                    dr[cols] = m.Caption;                    cols++;                }                //数据列                for (int x = 1; x <= cs.Axes[0].Positions.Count; x++)                {                    dr[x + cols - 1] = cs[pos++].FormattedValue;                }                dt.Rows.Add(dr);            }            return dt;        }


原创粉丝点击