簡體   English   中英

C#Winforms將ListBox綁定到DataTable問題

[英]C# Winforms Bind ListBox to DataTable Issue

好吧,我在將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來解決問題。 我已經嘗試了所有這些但仍然沒有成功。

有什么建議? 除了遍歷數據行並手動添加它們之外,還有其他解決方案嗎?

最好的祝福。

我使用這個代碼,它工作。

DataTable oTable = new DataTable();
oTable.Columns.Add("ID", typeof(int));
oTable.Columns.Add("TITLE", typeof(string));

DataRow oNewRow = null;
for (int i = 0; i < 10; i++) 
{
    oNewRow = oTable.NewRow();

    oNewRow["ID"] = i;
    oNewRow["TITLE"] = "Title_" + i.ToString();

    oTable.Rows.Add(oNewRow);
}

listBox1.DataSource = oTable;
listBox1.ValueMember = "ID";
listBox1.DisplayMember = "TITLE";

在此輸入圖像描述

編輯:您可能需要先提供數據源,然后聲明值顯示成員。

重新排列聲明:

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

我的錯。 由於自定義ListBox DrawItem事件中的代碼不合適,ListBox沒有對DisplayMember和ValueMember更改做出反應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM