0

我需要将 xtrareport ( devexpress ) 绑定到对象模型。

假设我的模型是:

public class ReportViewModel
{
        public Header Header { get; set; }
        public Body Body { get; set; }
        public Footer Footer { get; set; }
}

我已经通过设计器完成了模板报告。

我应该如何使用 C# 从视图模型中提供报告?

这个不行

XtraReport1 report = new XtraReport1();
report.DataSource = viewModel;

提前致谢。

4

2 回答 2

3

仅将报表的 DataSource 设置为您的 ViewModel 是不够的,您还需要将控件绑定到相应的字段。以下是我在 WinForms 中为报告所做的类似操作:

public IssueReport(DataTable issuesTable)
{
    InitializeComponent();

    this.DataSource = issuesTable;

    xrlabelIssueNumber.DataBindings.Add("Text", this.DataSource, "IssueID");
    xrlabelAssignedUser.DataBindings.Add("Text", this.DataSource, "Assigned User");
    xrlabelPriority.DataBindings.Add("Text", this.DataSource, "Priority");
    xrlabelCategory.DataBindings.Add("Text", this.DataSource, "IssueCategory");
    xrlabelReceivedDate.DataBindings.Add("Text", this.DataSource, "ReceivedDate");
    xrlabelDueDate.DataBindings.Add("Text", this.DataSource, "DueDate");
    xrlabelProduct.DataBindings.Add("Text", this.DataSource, "Product");
    xrlabelStatus.DataBindings.Add("Text", this.DataSource, "Status");
    xrlabelSubStatus.DataBindings.Add("Text", this.DataSource, "Sub-Status");
    xrlabelVersion.DataBindings.Add("Text", this.DataSource, "VersionNumber");
    xrlabelCustomer.DataBindings.Add("Text", this.DataSource, "CustomerName");
    xrlabelLocation.DataBindings.Add("Text", this.DataSource, "LocationName");
    xrlabelRoom.DataBindings.Add("Text", this.DataSource, "RoomName");
    xrlabelPOC.DataBindings.Add("Text", this.DataSource, "POC");
    xrlabelOfficeNumber.DataBindings.Add("Text", this.DataSource, "OfficePhone");
    xrlabelCallbackNumber.DataBindings.Add("Text", this.DataSource, "CallbackNumber");
    xrlabelEmail.DataBindings.Add("Text", this.DataSource, "Email");
    xrlabelAlternateEmail.DataBindings.Add("Text", this.DataSource, "AlternateEmail");
    xrlabelSummary.DataBindings.Add("Text", this.DataSource, "IssueSummary");

}

DataBindings.Add方法接受 3 个参数;第一个是您要绑定到的对象的属性(99% 的时间它Text是 XtraReportLabel 的属性)。第二个是 BindingSource (在您的情况下,您的 ViewModel ......但这可能需要先转换为某种类型的 BindingList)。第三个是您要使用的 BindingSource 的字段。

希望有帮助....

于 2013-08-27T22:27:32.007 回答
0

您必须发送列表。

var viewModelList = new List<ReportViewModel>(){viewModel};
于 2021-04-04T12:57:14.787 回答