将DataSet绑定到WPF中的ComboBox

时间:2015-01-03 22:50:30

标签: c# sql-server wpf

我有一个问题。我不是WPF大师,但我有一个完成的功课。

我正在尝试将我的数据集从我的数据库绑定到组合框。

我在Windows Form Application中做过这个,但我不知道如何在WPF中。 我搜遍了整个互联网,但我是一个缓慢的人。 :)

如果你能帮助我,那就太好了。

XAML:

<StackPanel>
    <TextBlock Text="Válassz kategóriát!" FontSize="18" FontFamily="Capture it" HorizontalAlignment="Center"></TextBlock>
    <ComboBox Name="category_select" ItemsSource="{Binding}"></ComboBox>
</StackPanel>

C#:

private void show_categories()
{
    category_select.Items.Clear();
    SqlConnection con = new SqlConnection("Data Source=HQ\\SQLEXPRESS;Initial Catalog=BGIQuiz;Integrated Security=True");
    try
    {
        con.Open();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
    try
    {
        SqlDataAdapter category_data = new SqlDataAdapter("SELECT * FROM TYPE", con);
        DataSet ds = new DataSet();
        category_data.Fill(ds, "t");

        category_select.DataContext = ds.Tables["t"].DefaultView;
        category_select.DisplayMemberPath = ds.Tables["t"].Columns["description"].ToString();
        category_select.SelectedValuePath = ds.Tables["t"].Columns["type_id"].ToString();

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}

数据库:

http://i.stack.imgur.com/1XgYS.png

2 个答案:

答案 0 :(得分:5)

如果您的列名称是&#34;说明&#34;和&#34; type_id&#34;你可以这样做:

category_select.DisplayMemberPath = "description";
category_select.SelectedValuePath = "type_id";

作为建议,您可以在代码中设置ItemSource属性而不是DataContext:

 category_select.ItemSource= ds.Tables["t"].DefaultView;

因此,您不必在视图中设置该属性(ItemSeource):

 <ComboBox Name="category_select"></ComboBox>

你也可以这样做:

 <ComboBox Name="category_select" DisplayMemberPath = "description" SelectedValuePath = "type_id"></ComboBox>

并且不要在代码中设置这些属性。

答案 1 :(得分:1)

category_select.ItemsSource = ds.Tables["t"].DefaultView;
category_select.DisplayMemberPath = "description";
category_select.SelectedValuePath = "type_id";