用数据库查询结果填充ListBox
本文关键字:填充 ListBox 结果 查询 数据库 | 更新日期: 2023-09-27 18:25:56
正如标题所示,我正在尝试用数据库查询的结果填充ListBox
,尽管我不知道如何管理它。我已经设法从另一个查询中填充了DataGrid
,但我不知道如何对ListBox
执行同样的操作。我相信这很简单,但我错过了一些东西!类似的溢出页面/谷歌搜索还没有得到明确的答案。我正在visual studio中的WPF应用程序中使用c#。
在一个单独的课堂上,我有这个:
public DataTable FillAllMenuItems()
{
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)'MSSQLLocalDB;AttachDbFilename=C:'Users'DustCatcher'Documents'pizzeria.mdf;Integrated Security=True;Connect Timeout=30");
SqlCommand cmd = new SqlCommand("SELECT name FROM MenuItems", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable("Menu Items");
sda.Fill(dt);
return dt;
}
顺便说一句,我确信上面的内容很混乱,所以那里的任何指针都会很棒(我需要using
吗?)。在相关的windows cs文件上,我有:
User user = User.GetInstance();
lstbxAllItems.ItemsSource = user.FillAllMenuItems().DefaultView;
运行应用程序时,ListBox
的System.Data.DataRowView
次数与数据库中项目的次数一样多。我哪里错了?
您需要在lstbxAllItems.ItemsSource
:之后设置lstbxAllItems.DisplayMemberPath
lstbxAllItems.DisplayMemberPath = "Name"; // Or any column you want to show in your ListBox
但作为一种更好的方法,您可以使用ListView.ItemTemplate
和Binding
来实现此目的。类似这样的东西:
<ListBox Name="lstbxAllItems">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
private void BindListbox()
{
myListBox.DataSource = dt;
myListBox.DisplayMemberPath = "Name";
}