TLDR ; Tôi có một giải pháp hai dòng.
Tôi phải làm điều tương tự, nhưng sau khi nghiên cứu tất cả những cách phức tạp này để thực hiện điều này bằng cách bao gồm một .dll riêng biệt hoặc viết lớp/phương pháp riêng của tôi, tôi biết phải có cách dễ dàng hơn. Nó chỉ ra tôi đã đúng bởi vì tôi đã tìm ra cách để thực hiện điều này bằng cách sử dụng chỉ có hai dòng mã. Điều này làm việc cho tôi.
May thay, nó chỉ ra cho chúng ta rằng phương thức .NET Framework Sort() giúp chúng ta thực hiện điều này. Ý tưởng là bạn muốn sắp xếp các cột riêng lẻ, nhưng thứ tự mà bạn sắp xếp chúng là những gì sẽ tạo ra kết quả mong muốn.
Vì vậy, ví dụ, tôi có một cột cho loại tệp và cột cho tên tệp. Bất cứ khi nào tôi muốn sắp xếp dữ liệu theo các loại, tôi muốn đảm bảo rằng các tên cũng được sắp xếp trong mỗi loại được hiển thị.
MỤC TIÊU: Sắp xếp theo loại cũng sẽ sắp xếp tên tệp theo thứ tự bảng chữ cái.
dữ liệu:
zxcv.css
testimg3.jpg
asdf.html
testimg2.jpg
testimg1.jpg
dữ liệu Phân loại theo tên:
mConflictsDataGridView.Sort(mConflictsDataGridView.Columns[mNameLabel.Index], ListSortDirection.Ascending);
asdf.html
testimg1.jpg
testimg2.jpg
testimg3.jpg
zxcv.css
Như bạn thấy, điều này sẽ đặt tên cho chắc chắn rằng những cái tên sẽ được sắp xếp cho phù hợp, như vậy mà khi tôi bây giờ sắp xếp theo loại tệp, cả hai yêu cầu sẽ thỏa mãn.
dữ liệu Phân loại theo loại file:
mConflictsDataGridView.Sort(mConflictsDataGridView.Columns[mFileExtensionLabel.Index], ListSortDirection.Ascending);
zxcv.css
asdf.html
testimg1.jpg
testimg2.jpg
testimg3.jpg
Thì đấy! Nó được sắp xếp!
GIẢI PHÁP: Trong trường hợp của bạn, bạn có thể muốn thử một cái gì đó như sau, và bạn có thể cần phải tinh chỉnh một số chi tiết để có nó phục vụ cho mã của riêng bạn.
DataGridView1.Sort(DataGridView1.Columns["status"], ListSortDirection.Ascending);
DataGridView1.Sort(DataGridView1.Columns["day"], ListSortDirection.Asscending);
Điều này sẽ có thể hiển thị kết quả của bạn theo ngày với trường trạng thái được sắp xếp là tốt.
tôi không nghĩ rằng bạn có thể sắp xếp chúng với nhau, bạn có thể gọi mã của bạn cho 2 cột để đặt hàng theo ngày đầu tiên và bằng một cột khác sau – Moonlight
bạn có thể xem tại đây: http://social.msdn.microsoft .com/Diễn đàn/vi-US/winformsdatacontrols/thread/7f819d92-5bd9-4b5b-b08c-fb15bb5331c4/ –
Bạn đang sử dụng WinForms hay cái gì khác? –