首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XtraReport :不能使用分配给DataSource属性的对象

XtraReport :不能使用分配给DataSource属性的对象
EN

Stack Overflow用户
提问于 2012-12-15 09:43:21
回答 1查看 7.2K关注 0票数 1

我有一个C#应用程序,它使用存储在数据库中的报表,对于特定的报表,它使用XPObject作为数据源(CptOperation类,代码如下),在试图打印或预览时,我会收到以下错误消息:

分配给datasource属性的对象不能用作报表的数据源,因为它不实现任何受支持的接口。有关更多信息,请参见http://help.devexpress.com/#XtraReports/CustomDocument1179

这是我用来打印报告的代码。

代码语言:javascript
复制
public static void PrintReport(string reportCode, object dataSource, string printerName)
{
    using (var uow = new UnitOfWork { ConnectionString = Content.GlobalInfo.ServerConnectionString })
    {
        var report = uow.FindObject<Content.Report>(new BinaryOperator("Code", reportCode));
        if (report == null)
        {
            XtraMessageBox.Show(String.Format("The report {0} is not found", reportCode),
                Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            return;
        }

        var xtraReport = getXtraReportFromReport(report);
        xtraReport.DataSource = dataSource;

        if (!String.IsNullOrEmpty(printerName))
            xtraReport.Print(printerName);
        else
            xtraReport.Print();
    }
}

private static XtraReport getXtraReportFromReport(Content.Report report)
{
    XtraReport xtraReport;
    using (var writer = new StreamWriter(new MemoryStream()))
    {
        writer.Write(report.Content);
        writer.Flush();
        xtraReport = XtraReport.FromStream(writer.BaseStream, true);
    }
    return xtraReport;
}

这是我的对象持久性类"CptOperation“:

代码语言:javascript
复制
private CptTypeOperation cptTypeOperation;
public CptTypeOperation CptTypeOperation
{
    get { return cptTypeOperation; }
    set { SetPropertyValue<CptTypeOperation>("CptTypeOperation", ref cptTypeOperation, value); }
}

private int numero;
public int Numero
{
    get { return numero; }
    set { SetPropertyValue<int>("Numero", ref numero, value); }
}

private CptSession cptSession;
[Association("CptSession-CptOperation")]
public CptSession CptSession
{
    get { return cptSession; }
    set { SetPropertyValue<CptSession>("CptSession", ref cptSession, value); }
}

[Association("CptOperation-Piece")]
public XPCollection<Piece> Pieces
{
    get { return GetCollection<Piece>("Pieces"); }
}

[Association("CptOperation-Transact")]
public XPCollection<Transact> Transacts
{
    get { return GetCollection<Transact>("Transacts"); }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-09 12:55:49

问题的出现是因为我发送了一个XPObject类型的对象作为报表数据源,但是实际上,xtraReport数据源必须是一个IListIList<T>对象,例如,它可以是类型:XPCollection<CptOperation>List<CptOperation>.

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13891132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档