2016-08-25 64 views
1

這是一個基本的ComboBox用下面的代碼時:錯誤ComboBox.Sorted屬性設置爲true

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或者我錯過了一些東西。

回答

1

如在單證爲Sorted屬性中提到:

嘗試設置上的數據綁定控件的屬性Sorted引發 一個ArgumentException。您必須使用基礎數據 模型對數據進行排序。

爲了解決這個問題,你可以通過指定一種表達其DefaultViewSort財產DataTable排序。

屬性的值可以是列名,然後是ASC(升序)或DESC(降序)。列按默認順序升序排列。您可以通過逗號分隔排序表達式來對多個列應用排序。

dt1.DefaultView.Sort = "Name"; 

你也可以通過添加ORDER BY排序查詢:

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

謝謝你的答案,我跳過了ArgumentException的完全,謝謝了很多! –

相關問題