将 DataSet 绑定到 WPF 中的 ComboBox
Binding DataSet to a ComboBox in WPF
我有问题。我不是WPF高手,但有作业要完成
我正在尝试将我的数据集从我的数据库绑定到一个组合框。
我已经在 Windows 表单应用程序中完成了此操作,但我不知道如何在 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());
}
}
数据库:
category_select.ItemsSource = ds.Tables["t"].DefaultView;
category_select.DisplayMemberPath = "description";
category_select.SelectedValuePath = "type_id";
如果您的列名称是 "description" 和 "type_id",您可以这样做:
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>
并且不要在后面的代码中设置这些属性。
我有问题。我不是WPF高手,但有作业要完成
我正在尝试将我的数据集从我的数据库绑定到一个组合框。
我已经在 Windows 表单应用程序中完成了此操作,但我不知道如何在 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());
}
}
数据库:
category_select.ItemsSource = ds.Tables["t"].DefaultView;
category_select.DisplayMemberPath = "description";
category_select.SelectedValuePath = "type_id";
如果您的列名称是 "description" 和 "type_id",您可以这样做:
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>
并且不要在后面的代码中设置这些属性。