我有一个简单的访问数据库,其中包含“ITEM ID”和“ITEM NAME”。以下是一个例子。
1剑
2 Ax
3只猫
当尝试使用查询将其放入我的listBox时,它会显示“System.Data.DataRow”。 我已经找到了单独显示“ITEM ID”或“ITEM NAME”的方法,但没有按照我的意愿一起显示。
如果有人能告诉我如何让它出现“1 Sword”,那将是很棒的,因为我现在一直在寻找答案。
{{1}}
现在我正在使用一个查询框调用上面的内容,希望能将结果显示在listBox上。
我也在Visual Studio 2015中使用WinForms(必需)。我也不想使用除listBox之外的任何东西。除了这个问题,它有我想要的外观,并做我需要的一切。
答案 0 :(得分:2)
试试这个:
private void RunQuery()
{
errorMsg = "";
q = SearchBoxItemsAll.Text;
try
{
OleDbCommand cmd = new OleDbCommand(q, conn);
OleDbDataAdapter a = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
a.SelectCommand = cmd;
a.Fill(dt);
a.Dispose();
foreach(var v in dt.Rows)
{
listBox1.Items.Add(v[0].ToString()+" "+v[1].ToString());
}
}
catch (Exception ex)
{}
}
更好的方法是指定DisplayMember和ValueMember并更改SQL:
private void RunQuery()
{
errorMsg = "";
//q = SearchBoxItemsAll.Text;
//Concatenate the ID and the Name in the SQL Query
q = "SELECT [ITEM ID] , ([ITEM ID] +' '+ [ITEM NAME]) AS [ITEM NAME] FROM ITEMS";
try
{
OleDbCommand cmd = new OleDbCommand(q, conn);
OleDbDataAdapter a = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable();
a.SelectCommand = cmd;
a.Fill(dt);
a.Dispose();
listBox1.DisplayMember = "ITEM_NAME";
listBox1.ValueMember = "ITEM_ID";
listBox1.DataSource = dt;
}
catch (Exception ex)
{}
}
答案 1 :(得分:0)
ListBox控件不支持多列显示。请尝试使用ListView控件并添加子项