设置组合框时出错.排序属性为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或我错过了一些东西。
在Sorted
属性的文档中提到:
尝试在数据绑定控件上设置
Sorted
属性会引发一个ArgumentException。必须使用基础数据对数据进行排序模型。
为了解决这个问题,你可以通过给DefaultView
的Sort
属性赋一个排序表达式来对DataTable
进行排序。
属性的值可以是列名后面加ASC
(升序排序)或DESC
(降序排序)。默认情况下,列按升序排序。您可以通过用逗号分隔排序表达式来对多个列应用排序。
dt1.DefaultView.Sort = "Name";
您还可以通过添加ORDER BY
:
SELECT * FROM HOTEL WHERE HOTEL_CITY = @CITY ORDER BY Name