【问题标题】:Field List is not showing data when DataSource is set dynamically for ASPxReportDesigner - Web based report desginer by DevExpress当为 ASPxReportDesigner 动态设置数据源时,字段列表不显示数据 - DevExpress 的基于 Web 的报表设计器
【发布时间】:2015-01-26 13:48:26
【问题描述】:

我目前正在尝试开发基于 Web 的报表设计器。我目前面临的问题是我无法在设计器中看到绑定数据源的字段。以下是我的代码

DataSet ds = new DataSet();
ds.DataSetName = "Data Set";
ds.Tables.Add(dataTable);

var report = new XtraReport();

report.DataSource = ds;
report.DataMember = ds.Tables[0].TableName;// "ExcelParser Data"

ASPxReportDesigner1.OpenReport(report);

dataTable 是使用 Excel 工作表填充的,因此它包含列和行。即使我创建了一个存根数据表,它的字段也不会显示在报表设计器中。

我还尝试从数据集在驱动器上写入一个 .XSD 文件,并将文件路径作为 DataSoruceSchema 参数。还是没用。

在 DevExpress 门户上没有太多可用的帮助,无论是 w.r.t ASP.NET 报告设计器。

【问题讨论】:

    标签: asp.net devexpress


    【解决方案1】:

    最后我在 DevEx 支持的帮助下完成了它。运行时创建的数据集似乎需要自定义数据集序列化程序才能工作。 这是现在更新的代码

    XtraReport report = new XtraReport();
                    report.Extensions[SerializationService.Guid] = MyDataSerializer.Name;
                    report.DataSource = MyDataSerializer.GenerateActorMembers();
                    report.DataMember = "Actor Members";
                    ASPxReportDesigner1.OpenReport(report);
    

    这是我的数据更新后的自定义序列化程序

    public class MyDataSerializer : IDataSerializer {
            public const string Name = "MyDataSerializer";
    
            public bool CanSerialize(object data, object extensionProvider) {
                return data is DataSet;
            }
    
            public string Serialize(object data, object extensionProvider) {
                var ds = (DataSet)data;
                return ds.DataSetName;
            }
    
            public bool CanDeserialize(string value, string typeName, object extensionProvider) {
                return value == "Members";
            }
    
            public object Deserialize(string value, string typeName, object extensionProvider) {
                if(value == "Members") {
                    return GenerateActorMembers();
                }
                return null;
            }
    
            public static DataSet GenerateActorMembers() {
                var dt = new DataTable();
                dt.TableName = "Actor Members";
    
                dt.Columns.Add("MemberId");
                dt.Columns.Add("MemberName");
                dt.Columns.Add("MemberDOB");
                dt.Columns.Add("MemberAddress");
    
                dt.Rows.Add(dt.NewRow());// Rows.Add(new DataRow());
                dt.Rows[0]["MemberId"] = "1";
                dt.Rows[0]["MemberName"] = "George Clooney";
                dt.Rows[0]["MemberDOB"] = "1960/01/02";
                dt.Rows[0]["MemberAddress"] = "NY, NY, USA";
    
                dt.Rows.Add(dt.NewRow());
                dt.Rows[1]["MemberId"] = "2";
                dt.Rows[1]["MemberName"] = "Reober Deniro";
                dt.Rows[1]["MemberDOB"] = "1958/01/02";
                dt.Rows[1]["MemberAddress"] = "NY, NY, USA";
    
                dt.Rows.Add(dt.NewRow());
                dt.Rows[2]["MemberId"] = "3";
                dt.Rows[2]["MemberName"] = "Clive Owen";
                dt.Rows[2]["MemberDOB"] = "1965/01/02";
                dt.Rows[2]["MemberAddress"] = "London, London, UK";
    
                dt.Rows.Add(dt.NewRow());
                dt.Rows[3]["MemberId"] = "4";
                dt.Rows[3]["MemberName"] = "Clive Owen";
                dt.Rows[3]["MemberDOB"] = "1965/01/02";
                dt.Rows[3]["MemberAddress"] = "London, London, UK";
    
                var ds = new DataSet();
                ds.Tables.Add(dt);
                ds.DataSetName = "Members";
                return ds;
            }
        }
    

    您需要在 Global.asax 的 Application_Start 中注册序列化程序

    SerializationService.RegisterSerializer(MyDataSerializer.Name, new MyDataSerializer());
    

    这里是代码Field List in ASPxReportDesigner is not showing的解决方案和DevEx解释

    但我仍在尝试弄清楚如何处理从数据库动态填充的数据集。问题是在这种情况下我不知道表的数量和名称。还在努力中……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多