我正在尝试将一列表的内容放入listbox
。我使用这段代码来做到这一点。
listBox1.DataContext = ds.Tables[0];
我也尝试使用此代码
listBox1.ItemsSource = ds.Tables[0];
两者都不起作用。
知道我该怎么做?
namespace itinventory
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
SqlConnection con ;
SqlDataAdapter da ;
DataSet ds;
public MainWindow()
{
InitializeComponent();
con = new SqlConnection("Server=myserver\\sqlexpress;" + "Database=ITINVENTORY;User ID=sa;" + "Password=mypassword");
con.Open();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter("select DISTINCT orgcode from Employees", con);
DataSet ds = new DataSet();
da.Fill(ds,"orgcode");
listBox1.DataContext = ds.Tables[0];
}
}
}
答案 0 :(得分:0)
这里有优化的代码和一些建议。
string constring = @"Data Source=.\SQLEXPRESS;AttachDbFilename='D:\TEMPX\Projects X\ODataClient\ODataClient\Data\northwnd.mdf';Integrated Security=True;User Instance=True";
void button1_Click(object sender, RoutedEventArgs e)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(constring))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from Employees", con);
da.Fill(dt);
con.Close();
}
listBox1.ItemsSource = dt.AsDataView();
}
我不会告诉你如何编写查询。但对于你的问题,这里有一些观点。
如果您正在使用绑定,那么dataContext就可以了。 DataContext意味着您传递的对象可以进一步绑定到其子属性。你neec绑定ListBox的ItemsSource属性。如
的ItemsSource = {结合}。
<ListBox x:Name="listBox1">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding FirstName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
但是,如果您只是将数据传递给List,那么您需要做的是将数据分配到ItemsSource属性中,并且只显示对象类型Full Name,显示数据。使用上面的模板显示数据。
另一件事是当你将DataTable对象分配给itemsssource / DataContext时,源必须是Enumrable,所以将它用作DataView。它继承了Ilist,IEnumrable。等