数据集加载WPF组合框

本文关键字:组合 WPF 加载 数据集 | 更新日期: 2023-09-27 17:51:06

DataSet dataSet = new DataSet();
using (SqlConnection connection = new SqlConnection("server=server;   database=database; user id=user; password=user"))
{
     connection.Open();
     using (SqlCommand command = new SqlCommand("SELECT DISTINCT ID FROM TABLE ORDER BY ID ASC", connection))
     {
          SqlDataAdapter reader = new SqlDataAdapter(command);
          reader.Fill(dataSet);
          IDComboBox.DataContext = dataSet; --> This doesn't work
          IDComboBox.Itemsource = dataSet.Tables[0].Columns[0].ToString() --> doesn't work
          IDComboBox.Itemsource = dataSet.Tables[0].Rows[0].ToString() --> doesn't work
          IDComboBox.Itemsource = dataSet.Tables[0].Rows --> doesn't work
          IDComboBox.Itemsource = dataSet.Tables[0].Columns --> doesn't work
          They don't work even with me pairing it the IDComboBox.DataContext = dataSet.Tables[0].Rows[0] or Columns[0]
     }
     connection.Close();
     connection.Dispose();
}

我需要填写我的组合框在一个WPF从我的数据表的数据。我一直在寻找使用组合框的例子。Displaymember,组合框。源代码可以做到这一点,但c# WPF应用程序没有这些选项。如何从数据集或数据表中加载数据的WPF组合框?

我之前做的一种方法是

  using (SqlConnection connection = new SqlConnection("server=server; database=database; user id=user; password=user"))
  {
      connection.Open();
      using (SqlCommand command = new SqlCommand("SELECT DISTINCT ID FROM Table ORDER BY ID ASC", connection))
      {
           SqlDataReader reader = command.ExecuteReader();
           while (reader.Read())
           {
               for (int i = 0; i < reader.FieldCount; i++)
               {
                   IDComboBox.Items.Add(reader[i].ToString());
               }
           }
       }
       connection.Close();
       connection.Dispose();
  }

我知道有它循环到我的组合框是非常慢的,如果我有大量的数据,所以我想把它从一个数据集转储,以减少运行时间。

数据集加载WPF组合框

根据这个示例,您将需要使用ItemSource, DisplayMemberPathSelectedValuePath属性:

IDComboBox.ItemsSource = dataSet.Tables[0].DefaultView;
IDComboBox.DisplayMemberPath = dataSet.Tables[0].Columns["ID"].ToString();
IDComboBox.SelectedValuePath = dataSet.Tables[0].Columns["ID"].ToString();

xml中:

<ComboBox  Name="IDComboBox" ItemsSource="{Binding}"/> 

WPF ComboBox有一个可以使用的ItemSource属性

IDComboBox.ItemsSource = dataSet.Tables[0].Rows;