Я использую devexpress и у меня есть список с несколькими столбцами.
Данные обрабатываются с сортировкой по возрастанию по умолчанию в соответствии с требованиями заказчика.
Задача
У меня есть кнопка, которая должна отключить сортировку столбцов. У меня есть два свойства для работы: "OptionsColumn.AllowSort
" и SortOrder
. Проблема в том, что, хотя я установил OptionsColumn.AllowSort = false
, сортировка по-прежнему запускается при изменении значений столбца, поскольку у меня SortOrder
равно Ascending
.
Я обнаружил, что если я изменю OptionsColumn.AllowSort = false
и SortOrder
на None
, это дает мне желаемое поведение НО , когда я изменяю sortOrder на None, это вызывает сортировку, которая сбивает с толку клиента.
Что я хочу:
Проще говоря, мне нужно «заморозить» сортировку, что означает, что когда пользователь нажимает «DisableSorting», список не будет сортировать, как при изменении sortOrder на «none». Он просто останется таким, как есть, и при изменении значения, сортировка не должен срабатывать.
код
DisableButton :
private void DisableSorting_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
foreach (var c in xtlItemList.Columns)
{
c.OptionsColumn.AllowSort = false; // disable sorting on all columns
}
EnableSorting= false; // global variable indicating that the sorting shoult be disabled
}
Событие startSorting TreeList:
private void xtlItemList_StartSorting(object sender, EventArgs e)
{
try
{
var tree = (MatrixXTreeList)sender;
DevExpress.XtraTreeList.Columns.TreeListColumn col = tree.GetSortColumn(0);
if (EnableSorting == true) // if sorting enabled
{
var treeTest = (MatrixXTreeList)sender;
DevExpress.XtraTreeList.Columns.TreeListColumn col2 = treeTest.GetSortColumn(0);
if (col != null)
SetSortColumnID((MatrixXTreeList)sender, afterUpdate);
else
{
col.SortOrder = SortOrder.None;
}
}
else
{
col.SortOrder = SortOrder.None; // if sorting diabled,
//problem still triggers a sort since the SortOrder is changed from Ascending to None
}
}
catch (Exception ex)
{
}
}
Как мне добиться желаемого поведения?