Xtra Grid Sorted Data во время выполнения?

В моей форме есть xtragrid (скажем, myXtraGrid)

И я связываю datatable:

myXtraGrid.DataSource = dtMyDataTable;

myXtraGrid.BestFitColumns();

Допустим, у меня есть только один column в datatable с именем "My Column", и у него есть три rows данных, как показано ниже:

My Column
------
3
1
2

Чем на grid (on runtime), я нажимаю на column header (My Column) и сортирую данные

(3 1 2) ascending: (1 2 3)

Мой вопрос; как я могу получить отсортированные данные как Datatable, как показано ниже?

My Column
------
1
2
3

runtime я должен получить отсортированные данные и обработать их.

Спасибо, друзья.


person user1468360    schedule 20.06.2012    source источник
comment
Попробуйте ответить на этот вопрос: stackoverflow.com/questions/11228449/   -  person scotru    schedule 30.08.2015


Ответы (2)


Вы можете использовать DefaultView из Datatable и отсортировать представление, а затем преобразовать его в таблицу.

if (dtMyDataTable.Rows.Count > 0)
{
DataView dv = dtMyDataTable.DefaultView;
dv.Sort = "cy_column ASC";
dtMyDataTable= dv.ToTable();
}
person Akash KC    schedule 20.06.2012
comment
Все в порядке, но я не хочу программно сортировать данные. Во время выполнения я нажимаю на заголовок столбца, сортирую все данные и хочу получить эти отсортированные или сгруппированные данные. Как мне это сделать? - person user1468360; 20.06.2012
comment
Не очень хорошо знаком с xtragrid, но вы можете перейти по этой ссылке: support.smartbear.com/viewarticle/30556< /а> - person Akash KC; 20.06.2012

вы можете сделать DataView.

myDataView dvMyView = new DataView(myDataTable);

Этот DataView можно отсортировать с помощью:

dvMyView.Sort = " MyColumn ASC ";

Итак, у вас есть отсортированный DataView, который вы можете снова легко преобразовать в DataTable:

myDataTable = dvMyView.toTable();

Теперь у вас есть отсортированный DataSource :-)

P.S. На мой взгляд, BestPractice заключается в создании файла objectlist (List<myClass>). Это Objectlist можно отсортировать. И еще одно преимущество заключается в том, что значения, измененные в сетке, напрямую изменяют ваш объект в списке!

Я надеюсь, что это было полезно.

person Sebi    schedule 20.06.2012
comment
Все в порядке, но я не хочу программно сортировать данные. Во время выполнения я нажимаю на заголовок столбца, сортирую все данные и хочу получить эти отсортированные или сгруппированные данные. Как мне это сделать? - person user1468360; 20.06.2012
comment
Вы можете запустить все строки в DataGridView с помощью цикла и добавить их в новую таблицу данных (лучше Objectlist!). Сделайте это в событии EndSorting из вашего DataGridView. Поэтому после сортировки он сохранит данные в таблице данных/списке объектов. - person Sebi; 20.06.2012