[英]WPF and SQL Server 2008 R2 DB
现在当我按下按钮时,数据没有出现在列表框中,有什么帮助吗? 我想从数据库中获取数据并将其显示在列表框中,以便用户可以从中选择项目。 我正在使用WPF和SQL Server 2008 R2 ..
private void button1_Click(object sender,RoutedEventArgs e){
SqlConnection myConnection = new SqlConnection("user id=userid;" +
"password=password;server=localhost;" +
"Trusted_Connection=yes;" +
"database=db1; " +
"connection timeout=30");
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
try
{
myConnection.Open();
}
catch (Exception ex)
{
textBlock1.Text = "" + (ex.ToString());
}
da.SelectCommand = new SqlCommand("Select * FROM Products", myConnection);
da.Fill(ds,"Products");
listBox1.DataContext = ds;
}
首先,它可能更容易绑定到itemsSource而不是datacontext
其次,您正试图将列表框直接绑定到数据集,我认为这是不可能的。 我将创建一个dataview属性并将其设置为ds.Tables [0] .DefaultView。 然后在你的listbox xaml代码中显示放置的列:
<ListView ItemsSource="{Binding Path=myDataViewProperty}">
<ListView.View>
<GridView>
<GridViewColumn Header="Column1" DisplayMemberBinding="{Binding Column1}"/>
<GridViewColumn Header="Column2" DisplayMemberBinding="{Binding Column2}"/>
</GridView>
</ListView.View>
</ListView>
第三,你确定列表框是你想要显示的最合适的控件吗? 数据网格可能是更好的选择。
您必须定义绑定,单独设置DataContext不会填充数据,它只是声明绑定数据来源的来源。
<ListBox ItemsSource="{Binding Tables[0]}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ProductName}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
或者如果您只想在列表框中显示单个值:
<ListBox ItemsSource="{Binding Tables[0]}" DisplayMemberPath="ProductName"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.