2016-08-25 6 views
1

にComboBox.Sortedプロパティを設定するときは、次のコードでの基本的なComboBoxです:私はComboBoxは-Zからソートするために取得しようとすると、エラー真

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(); 
} 

問題が発生します。ソートされたプロパティをtrueに設定しないと、それが機能しますが、プロパティをtrueに設定しようとすると、System.Data.DataRowViewのエラーが発生し、ゆっくりと私を狂わせてしまいます。私は何が間違っているのか、おそらくそれはSQLであるか、途中で何かが欠落しているからです。 Sortedプロパティのドキュメンテーションで述べたように

答えて

1

:データバインドコントロールにSortedプロパティを設定しようと

は ArgumentExceptionが発生します。基本データの モデルを使用してデータをソートする必要があります。

あなたはそのDefaultViewSortプロパティに並べ替え式を割り当てることによってDataTableを並べ替えることができ、問題を解決します。

プロパティの値は、列名の後に昇順ソートの場合はASC、降順ソートの場合はDESCが続きます。列はデフォルトで昇順にソートされます。並べ替え式をコンマで区切って、複数の列に並べ替えを適用できます。

dt1.DefaultView.Sort = "Name"; 

またORDER BYを追加して、クエリを並べ替えることができます。

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

はあなたに多くのことを感謝し、私は完全にArgumentExceptionがスキップあなたの答えをありがとう! –

関連する問題