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 つの引数を取ります。1 つ目は、バインド先のオブジェクトのプロパティです (99% の場合Text、XtraReportLabel のプロパティです)。2番目はBindingSourceです(あなたの場合、あなたのViewModel ...しかし、これは最初にある種のBindingListに変換する必要があるかもしれません)。3 番目は、使用する BindingSource のフィールドです。

それが役立つことを願って....

于 2013-08-27T22:27:32.007 に答える