2013-08-25 3 views
0

Мне нужно привязать xtrareport (devexpress) к объектной модели.привязать объектную модель к XtraReport devexpress

Предположим, что моя модель:

Я уже сделал отчет шаблон через конструктор.

Как мне сделать, чтобы передать отчет из модели просмотра с помощью C#?

Это один не работает

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

Спасибо заранее.

ответ

2

Недостаточно просто установить 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 аргумента; 1-й - это свойство объекта, в который вы хотите привязать (в 99% случаев это свойство Text объекта XtraReportLabel). Второй является BindingSource (в вашем случае ваша ViewModel ... но это может быть необходимо сначала преобразовать в BindingList). Третий - это поле BindingSource, которое вы хотите использовать.

Надежда, что помогает ....

+0

дополнительно, чтобы связать объект он должен быть список и должны поставить (контроль окна формы) BindingSource к отчету https://documentation.devexpress.com/# xtrareports/CustomDocument7547 – FabianSilva

+0

, если вы выполняете эту привязку, при выборе метки можно выбрать во время разработки поле привязки или подзадачу (см. doc) – FabianSilva