【问题标题】:Error when setting ComboBox.Sorted property to true将 ComboBox.Sorted 属性设置为 true 时出错
【发布时间】:2017-01-02 09:22:41
【问题描述】:

这是一个基本的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 排序时出现问题。如果我没有将 sorted 属性设置为 true,它会起作用,但是一旦我尝试将属性设置为 true,它就会给我 System.Data.DataRowView 的错误,这让我慢慢发疯。知道我在做什么错了,可能是 sql 或者我在此过程中遗漏了什么。

【问题讨论】:

    标签: c# sql winforms combobox


    【解决方案1】:

    Sorted 属性的文档中所述:

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

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

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

    dt1.DefaultView.Sort = "Name";
    

    您还可以通过添加ORDER BY 来对查询进行排序:

    SELECT * FROM HOTEL WHERE HOTEL_CITY = @CITY ORDER BY Name
    

    【讨论】:

    • 感谢您的回答我完全跳过了 ArgumentException,非常感谢!
    猜你喜欢
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2013-04-20
    • 2012-02-19
    相关资源
    最近更新 更多