2011-02-07 12 views
9

データテーブルまたはDataGridViewを文字列値で並べ替える必要がありますが、昇順並べ替えの際には空白値が空白になります。DataTable文字列を並べ替えるには、空白または空白を末尾に付けます。

DataTableはSQLステートメントによって生成されないため、順序はありません。

私は

DataGridView1.Sort(New RowComparer(System.ComponentModel.ListSortDirection.Ascending)) 

を行う場合、それはDataGridViewのが正しいデータバインド、ですが、私を助けて、私はそれをデータバインドさ維持したくないと言って、例外がスローされます。

It's .NET 2.0は、LINQが利用できないことを意味します。

答えて

8

SELECT completed, completed IS NULL AS isnull 
FROM TABLE 
ORDER BY isnull DESC, completed DESC 



編集:VB.NET

でこのよう
 For Each srSearchResult In srcSearchResultCollection 

      Try 
       dr = dt.NewRow() 
       dr("cn") = srSearchResult.GetDirectoryEntry().Properties("cn").Value 
       dr("Account") = srSearchResult.GetDirectoryEntry().Properties("sAMAccountName").Value 
       dr("Nachname") = srSearchResult.GetDirectoryEntry().Properties("sn").Value 
       dr("Vorname") = srSearchResult.GetDirectoryEntry().Properties("givenname").Value 
       dr("Mail") = srSearchResult.GetDirectoryEntry().Properties("mail").Value 
       dr("HomeDirectory") = srSearchResult.GetDirectoryEntry().Properties("homedirectory").Value 
       dr("LogonScript") = srSearchResult.GetDirectoryEntry().Properties("scriptPath").Value 

       dr("IsNull") = String.IsNullOrEmpty(dr("Nachname").ToString()) 

       dt.Rows.Add(dr) 
      Catch ex As Exception 

      End Try 

     Next srSearchResult 
dt.DefaultView.Sort = "IsNull ASC, Nachname ASC" 
+0

それは動作しません –

+1

@ワーカスラジャ:それは汚いですが、動作します!面白い、どういうわけか私はいつも最も単純な解決策を見逃しているようだ。 –

+0

クール、その後、私の答えを答えに設定することができます;-) –

0

ユーザーインターフェイスコントロールのDataGridViewにバインドしたDataTableがSQL経由で読み込まれていない場合でも、あなたはまだデータビューを使用して、それを並べ替えることができ、あなたはこのような何かを行うことができます。

DataView myView = myDataTable.DefaultView; 
myView,Sort = "yourColumnName ASC"; 

、あなたはあなたのバインディングありません。

どのように動作しますか?ヌル値が上か下にありますか?あなたは、テーブル内の別の余分な列を持っている場合は、これを行うことができますいくつかのケースで

+0

ええ、Null /空の値は一番下には入れません。 –

+0

@Waqas Raja:まったく!それは私の問題です... –

+0

確かに、それはまさに私がやったことです。ちょっと質問のポイントが、そのようには起こりません。 –

7

ダヴィデPirasの良い解決策を持っていますが、私が持っている別の最も簡単な解決策があります

新しい列を追加して1行で行う

// just, add a new column 
ActualDataTable.Columns.Add("NullEmptyCheck", typeof(int), "ColumnNameToSort is Null OR ColumnNameToSort = ''"); 

// apply sort expression 
ActualDataTable.DefaultView.Sort = "NullEmptyCheck asc, ColumnNameToSort asc"; 
// pass datasource to grid 
MyGridView.DataSource = ActualDataTable.DefaultView; 
MyGridView.DataBind(); 
関連する問題