3

さて、ListBox コントロールを DataTable にバインドするときに問題が発生しました。

コード:

using (DbWrapper db = DbFactory.GetConnection("SQLite").WrapIn<MyDbWrapper>())
{
    db.Open();

    DataTable results = db.ExecuteQuery("SELECT id,title FROM schedule");

    ScheduleList.DataSource = results;
    ScheduleList.DisplayMember = "title";
    ScheduleList.ValueMember = "id";
}

このコードは、SQLite データベースからデータを受け取り、それを ScheduleList にバインドすることになっていますが、コンパイルすると、ListBox が System.Data.DataRowView 文字列で満たされていることがわかります。

ここに画像の説明を入力

データベースに問題はありません。アプリケーションはデータを受信して​​おり、データは正しいです。データテーブルを反復処理すると、id と title が列名として取得されるため、問題はありません。

バインディングの順序を変更するか、ListBox.Sorted プロパティを false に設定することで問題が解決する可能性があることを読みました。私はそれをすべて試しましたが、まだ成功していません。

助言がありますか?データ行を繰り返し処理して手動で追加する以外の解決策はありますか?

よろしくお願いします。

4

3 に答える 3

0

ステートメントを並べ替えます。

ScheduleList.DisplayMember = "title";
ScheduleList.ValueMember = "id";
ScheduleList.DataSource = results;
于 2013-05-30T13:50:55.903 に答える
0

私の悪い。カスタム ListBox DrawItem イベントの不適切なコードが原因で、ListBox が DisplayMember および ValueMember の変更に反応しませんでした。

于 2013-05-30T14:25:12.213 に答える