0

DataSets と BindingSources を扱うのはこれが初めてなので、お手柔らかにお願いします。

より複雑なレポート システムの一部として (基本的な化身まで抽出しましたが、それでも正しく動作しません)、問題のある DataSet を使用してデータベースからデータを取得しようとしています (つまり、設定されていません)。デザイナー経由でアップ)。これが私がこれまでに持っているコードです:

// pull the data set
var dsReportData = new Reports2.ReportTest2();
dsReportData.BeginInit();
dsReportData.SchemaSerializationMode = SchemaSerializationMode.IncludeSchema;

// bind tha data set
BindingSource bsReportBinding = new BindingSource();
((ISupportInitialize)bsReportBinding).BeginInit();
bsReportBinding.DataMember = dsReportData.Tables[0].TableName;
bsReportBinding.DataSource = dsReportData;
bsReportBinding.ResetBindings(true);

// test this stuff
dgvTester.DataSource = bsReportBinding;

dsReportData.EndInit();
((ISupportInitialize)bsReportBinding).EndInit();

これは、デザイナーを介してバインドを設定した後に .designer.cs ファイルで見たコードに基づいています。dgvTester は、デザイナーで作成された既定のプロパティを持つ単なる DataGridView です。

ReportTest2 データセットには、デザイナーを介して追加された TableAdapter が 1 つだけ含まれています。

ここで、VS で [データ] -> [データのプレビュー] に移動してReportTest2.payments.Fill,GetData ()オブジェクトをプレビューすると、SQL Server Management Studio で TableAdapter を作成するために使用したクエリを実行した場合と同じように、データが正常に返されます。

ただし、実際のコードを実行すると、DataGridView はクエリ結果から列名を取得しますが、実際のデータは取得しません。デバッガーはそれを明らかにしますdsReportData.payments.Rows.Count == 0(そして、そうです、dsReportData.Tables[0] は支払いです)。

最終的には BindingSource を使用して ReportViewer にデータを提供するつもりですが、まずレポートをデバッグする前に、データの取得に問題がないことを確認します。

ここで明らかな何かが欠けていることを願っています。そうだといい...

4

1 に答える 1

1

試行錯誤の末、思いつきました。これは私が欠けていた部分です:

var TableAdapter = new Reports2.ReportTest2TableAdapters.paymentsTableAdapter();
TableAdapter.Fill(dsReportData.payments);

デザイナーが .designer.cs ファイルではなく .cs ファイルに忍び込ませたため、参照していたコードには表示されませんでした。これでデータが表示されました。

于 2012-12-26T18:29:22.777 に答える