Заполнение ComboBox из DataSet C#
Собственно в чём суть дела, нет ничего проще заполнения ComboBox-а из DataSet-а.
Делается это вот так:
SqlConnection connRC = new SqlConnection(MainParams.ConStr);
string command = "SELECT Kod, Nam FROM Produkt ORDER BY Nam";
SqlDataAdapter da = new SqlDataAdapter(command, connRC);
DataSet ds = new DataSet();
connRC.Open();
da.Fill(ds);
connRC.Close();
comboBox1.DataSource = ds.Tables[0];
comboBox1.DisplayMember = "Nam";
comboBox1.ValueMember = "Kod";
Но работает зараза при больших выборках — адски медленно!
Выхода из этого 2:
1. Заполнять ComboBox из DataReader-а перебором построчно, как ни странно получается в разы быстрее.
Вот так:
SqlConnection con = new NpgsqlConnection(MainParams.ConnectionString);
SqlCommand com = new NpgsqlCommand("select * from Users order by NAME", con);
con.Open();
SqlDataReader reader;
reader = com.ExecuteReader();
while (reader.Read())
{
try
{
string result = reader.GetString(1);
comboBox1.Items.Add(result);
comboBox1.Text = result;
}
catch { }
}
con.Close();
2. Заполнять через DataSet, но один раз при запуске приложения и больше не трогать без необходимости, закидывать в DataSet всю выборку а потом играть с ней фильтрами. (лично мне этот метод нравится несколько больше).