因为报表分析页面需要所以选择了ASPxPivotGrid。
我根据数据动态生成PivotGridField,然后在控件的load事件中将dataset绑定至控件中。
控件的基本功能已完成,唯有在列头拖动的时候不能实现。 求解
附上源码:动态生成PivotGridField

private void PivotGridDataBind(DataSet ds)
        {
            if (ds != null && ds.Tables["ShowRowType"] != null)
            {
                if (ASPxPivotGrid1.Fields.Count <= 0)
                {
                    ASPxPivotGrid1.Fields.Clear();
                    int index = 0;
                    foreach (DataRow row in ds.Tables["ShowRowType"].Rows)
                    {                        PivotGridField pgf = new PivotGridField();
                        if (row["ShowType"].ToString() == "DCData")
                        {
                            pgf.Area = DevExpress.XtraPivotGrid.PivotArea.DataArea;
                            pgf.GroupIndex = 1;
                        }
                        else if (row["ShowType"].ToString() == "DCRow")
                        {
                            pgf.Area = DevExpress.XtraPivotGrid.PivotArea.RowArea;
                            pgf.GroupIndex = 2;
                        }
                        else if (row["ShowType"].ToString() == "DCColumn")
                        {
                            pgf.Area = DevExpress.XtraPivotGrid.PivotArea.ColumnArea;
                            pgf.GroupIndex = 3;
                        }
                        else
                        {
                            pgf.Area = DevExpress.XtraPivotGrid.PivotArea.FilterArea;
                            pgf.GroupIndex = 0;
                        }                        pgf.FieldName = row["FildName"].ToString();
                        pgf.Caption = row["DisplayName"].ToString();
                        pgf.Index = index;
                        //pgf.FilterValues.Clear();
                        ASPxPivotGrid1.Fields.AddField(pgf);
                        index++;
                    }
                }
            }
}
控件load事件
protected void ASPxPivotGrid1_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                PivotGridDataBind(DataXML);
            }
                string reportName = DataXML.Tables["_OPERATOR"] != null ? DataXML.Tables["_OPERATOR"].Rows[0]["TABLE_NAME"].ToString() : "";
                if (reportName != "")
                {
                    ASPxPivotGrid1.DataSource = DataXML.Tables[reportName];
                    ASPxPivotGrid1.DataBind();
                }
        }