繁体   English   中英

WPF和SQL Server 2008 R2 DB

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM