簡體   English   中英

對DataTable字符串列進行排序,但底部為null / empty

[英]Sorting DataTable string column, but with null/empty at the bottom

我需要通過一個字符串值的列對DataTable或DataGridView進行排序,但在排序ASCENDING時在BOTTOM中使用null / empty值。

DataTable沒有填充SQL語句,因此沒有訂單。

如果我做

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

然后它拋出一個異常,說DataGridView是DataBound,這是正確的,但對我沒有幫助,我想保持它的數據綁定。

它是.NET 2.0,這意味着沒有LINQ可用!

在某些情況下,如果表中還有另一列,則可以執行此操作:

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"

Davide Piras有一個很好的解決方案,但是我有另一個最簡單的解決方案

添加一個新列,只需一行即可完成

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

即使您綁定到用戶界面控件DataGridView的DataTable沒有通過SQL填充,您仍然可以使用DataView對其進行排序,您可以執行以下操作:

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

然后你做你的綁定。

它是如何工作的? 空值是在頂部還是在底部?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM