0

XtraReportBindingSource( ではなく)にバインドしようとしてDatasetおり、レポート パラメーターを使用してレポートに到達する前に、データ ソースの値をフィルター処理したいと考えています。

レポート デザイナーでパラメーターと bindingsource を既に宣言しています。これで、フィールドとすべてが設定されました。

この記事によるとLoad、Windows フォームのイベントでコレクションをロードできるようになりました。しかし、私はそれを望んでいません。

つまり、レポートはカスタムStoreCollection(List<T>カスタムStoreタイプの) からすべての行をロードするのではなく、パラメーターによって決定される行のみをロードする必要があります。

どうすればこれを達成できますか?

注: にプロパティBindingSourceがあることはわかっていFilterますが、パラメータを渡す方法がわかりません (パラメータはデータベースからデータを取得するために使用され、カスタム タイプのリストが返されます)。

ありがとうございました。

4

1 に答える 1

0

レポートに入る前に、LINQ を使用してデータを選択します。私のコードは VB.net にありますが、かなり簡単に翻訳できます。

1 - データ オブジェクトを作成します - データが含まれます

Public Class Animal
    Public name As String
    Public livesYears As Integer
    Public location As String
End Class

2 - XtraReport1 を作成します。BindingSourceaをデザイナーにドロップし、それを に設定DataSourceAnimalます。Animalウィザードが生成するリストに表示されない場合は、ソリューションを再構築する必要があります。いくつかのフィールドをデザイナーにドロップします...「名前」など、レポートに何か...レポートするものがあります!

3 - サブを作成してリストに入力します

Private Function createAnimals() As List(Of Animal)
    Dim allAnimals As New List(Of Animal)

    allAnimals.Add(New Animal With {.name = "Snake", .livesYears = "12", .location = "Africa"})
    allAnimals.Add(New Animal With {.name = "Dog", .livesYears = "17", .location = "England"})
    allAnimals.Add(New Animal With {.name = "Cat", .livesYears = "14", .location = "Egypt"})
    allAnimals.Add(New Animal With {.name = "Hedgehog", .livesYears = "4", .location = "England"})
    allAnimals.Add(New Animal With {.name = "Dragon", .livesYears = "350", .location = "Canada"})
    allAnimals.Add(New Animal With {.name = "Bat", .livesYears = "28", .location = "Scotland"})

    Return allAnimals
End Function

4 - Form Load でレポートのインスタンスを作成する

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

    'create our list of animals (could be a for loop that adds each dataset row to the list of Animal)
    Dim allAnimals As List(Of Animal) = createAnimals()

    'select just the Animals that we want
    Dim justTheAnimalsIWant = (From ani In allAnimals
                              Where ani.location = "England"
                              Select ani).ToList

    'create instance of the report
    Dim report As New XtraReport1

    'set the datasource to justTheAnimalsIWant
    report.DataSource = justTheAnimalsIWant

    Dim printTool As ReportPrintTool = New ReportPrintTool(report)
    printTool.ShowPreview()
End Sub

上記の例はデータセットを使用せず、Animalオブジェクトのリストを使用します。オブジェクトのリストを作成Animalするには、for ループを使用してデータ行を反復処理し、Animalオブジェクトのリストに追加します。次に、LINQ を使用して必要なものを選択した後、justTheAnimalsIWant. シンプル。

于 2013-08-02T08:01:48.033 に答える