设置组合框时出错.排序属性为true

本文关键字:属性 true 排序 出错 组合 设置 | 更新日期: 2023-09-27 18:03:57

这是一个基本的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();
}

当我试图让ComboBox从A-Z排序时,问题出现了。如果我不将排序属性设置为true,它就会工作,但是一旦我尝试将属性设置为true,它就会给我System.Data.DataRowView的错误,它慢慢地让我发疯。任何想法是什么我做错了,也许因为它是sql或我错过了一些东西。

设置组合框时出错.排序属性为true

Sorted属性的文档中提到:

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

为了解决这个问题,你可以通过给DefaultViewSort属性赋一个排序表达式来对DataTable进行排序。

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

dt1.DefaultView.Sort = "Name";

您还可以通过添加ORDER BY:

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