将ComboBox.Sorted属性设置为true

时间:2016-08-25 20:02:34

标签: c# sql winforms combobox

这是一个基本的ComboBox,代码如下:

private void hotel_Selection()
{
    con = new SqlConnection(constr);
    con.Open();
    cmd = new SqlCommand("SELECT * FROM HOTEL WHERE HOTEL_CITY = @CITY", con);
    cmd.Parameters.AddWithValue("@CITY", citiesID);
    SqlDataReader dr1;
    dr1 = cmd.ExecuteReader();
    DataTable dt1 = new DataTable();
    dt1.Columns.Add("ID", typeof(int));
    dt1.Columns.Add("NAME", typeof(string));
    dt1.Load(dr1);
    hotelCbox.ValueMember = "ID";
    hotelCbox.DisplayMember = "NAME";
    hotelCbox.DataSource = dt1;
    hotelCbox.SelectedIndex = -1;
    con.Close();
}

当我尝试从A-Z中对ComboBox进行排序时,会出现问题。如果我没有将sorted属性设置为true它可以工作,但是一旦我尝试将该属性设置为true,它就会给我System.Data.DataRowView的错误,它正在慢慢地让我发疯。任何想法是什么我做错了,也许是因为它是sql或者我在路上遗漏了什么。

1 个答案:

答案 0 :(得分:1)

正如Sorted财产的文件所述:

  

尝试在数据绑定控件上设置Sorted属性会引发   一个ArgumentException。您必须使用基础数据对数据进行排序   模型。

要解决此问题,您可以通过将排序表达式分配给其DataTable的{​​{3}}属性来对DefaultView进行排序。

属性的值可以是列名,后跟ASC进行升序排序,DESC进行降序排序。默认情况下,列按升序排序。您可以通过用逗号分隔排序表达式来对多个列应用排序。

dt1.DefaultView.Sort = "Name";

您还可以通过添加Sort

对查询进行排序
SELECT * FROM HOTEL WHERE HOTEL_CITY = @CITY ORDER BY Name