仅将报表的 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 的字段。
希望有帮助....