Отключение сортировки в Datagrid и DataTreeGrid

К сожалению, в стандартном DataGrid нет возможности отключить сортировку грида опционально. Поэтому в случае, если необходимо реализовать подобную функциональность, то могу предложить альтернативное решение.
Как известно, при включении сортировки грида - датасет сперва закрывается, затем открывается уже с сортировкой. Следовательно, для того, чтобы отключить возможность сортировки необходимо просто "не дать" датасету закрыть себя (это происходит при нажатии на названии колонки).

Для этого, в событии датасета "OnDatasetBeforeClose" прописываем следующее:

function mds_rtsOnDatasetBeforeClose(Dataset, DoClose) {
    DoClose.Value = false;
}

Таким образом он просто не закроется. Но, когда это необходимо сделать (для того, чтобы очистить датасет и следовательно наполнить иными данными), то следует просто передать соответствующий параметр. К примеру:
....

//Здесь нужно дать датасету себя закрыть
Dataset.Attributes('AllowClose') = true;
Dataset.Close();
Dataset.Append();
.....
и метод "OnDatasetBeforeClose" будет выглядеть так:
function mds_rtsOnDatasetBeforeClose(Dataset, DoClose) {
    if (Dataset.Attributes('AllowClose')) {
        DoClose.Value = true;
        Dataset.Attributes('AllowClose') = null;
        return;
    }
    DoClose.Value = false;
}

Таким образом, датасет будет закрываться только при помощи пользователя (а не грида или дерева).

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

0 комментариев
Показать все комментарии