Разница в порядке сортировки в SQL и TreeList
В моей программе VB.NET я использую Devexpress TreeList v9.2. Когда я запускаю программу, я заполняю TreeList из хранимой процедуры.
Когда я запускаю процедуру SQL в SQL Management Studio, мои данные возвращаются так, как я хочу. Например
- 3
- 6
- 33
- 42
- 54
- 206
- 226
- 733
- 6633
Тем не менее, когда я запускаю программу и заполняю TreeList теми же результатами из хранимой процедуры, я получаю:
- 206
- 226
- 3
- 33
- 42
- 54
- 6
- 6633
- 733
Вы знаете, что я могу делать не так?
РЕДАКТИРОВАТЬ:
У меня есть "заказ по" в моей хранимой процедуре. Вот почему я получаю правильный порядок, когда запускаю хранимую процедуру из SQL Management Studio. Сортировка по порядку разбивает число на подстроки (поскольку они могут также содержать буквы), поэтому оно сортируется численно. Почему-то похоже, что TreeList использует его как Strings, а не сохраняет его в исходном порядке сортировки.
РЕДАКТИРОВАТЬ:
Я создал другой столбец, содержащий числовые данные, чтобы при сортировке таблицы по возрастанию этого столбца мои данные выглядели так, как я хочу. Но даже если я отправил SortOrder в свойствах, он не будет сортироваться, даже если маленький треугольник появился в заголовке сетки при запуске.
РЕШИТЬ:
Я решил это, позвонив:
- tree.beginSort ()
- установив sortindex для столбца, по которому я хочу отсортировать, равным 0, а для остальных столбцов - -1:
tree.columns("colName").SortIndex
- установка сортировки моего столбца по возрастанию:
tree.columns("colName").SortOrder = SortOrder.Ascending
- tree.endsort ()
1 ответ
Столбец treeList привязан к строковому полю. В этом случае treeList считает, что этот столбец содержит строковые значения, и сортирует их как строки. Чтобы изменить это поведение, используйте подход " Выборочная сортировка", предоставляемый XtraTreeList.