Добрый день. Объясните почему не отрабатывает фильтр в DataTreeGrid? Фильтр IsNull, включаю, а ничего не происходит, читал, что необходимо привести сначала к списку, но и так ничего не срабатывает. Вот мой код:
var SelectQuery = dlData.Dataset.SelectQuery;
if (ParentDataFieldName == 'ParentID') {
grdData.ParentDataFieldName = 'ID';
EnableDatasetFilters(dlData.Dataset,true,'ContractID');
RefreshDataset(dlData.Dataset);
Нравится
Так почему то не работает.. Фильтр вообще не включается..
1. Давайте для начала версию уточним.
2.Посмотрите какой запрос идет либо с помощью Connector.DBEngine.GetSelectQuerySQLText(SelectQuery) либо с помощью профайлера.
3. Попробуйте включить любой другой фильтр на котором будет просто тестировать результат.
Версия 3.3.1. Я включал фильтр из под админа, но результат тот же, все записи отображаются, хотя те, что должны были отфильтроваться считаются отфильтрованными, но все равно в списке присутствуют. Определил что отфильтрованные так - при нажатии на "Изменить" выскакивает сообщение что запись удалена..
Нет.. Похоже у этой компоненты с фильтрами дружбы не складывается..)
Николай, возможно, это происходит по следующей причине: Вы устанавливаете grdData.ParentDataFieldName = 'ID', но назад в grdData.ParentDataFieldName = 'ParentID' не возвращаете. Следовательно, когда Вы ожидаете, что сработает фильтр, он не может сработать, так как не выполняется условие
if (ParentDataFieldName == 'ParentID')
Попробуйте, сработает ли следующий код:
var ParentDataFieldName = grdData.ParentDataFieldName; var Dataset = dlData.Dataset; Dataset.DisableEvents(); if (ParentDataFieldName == 'ParentID') { grdData.ParentDataFieldName = 'ID'; Dataset.Close(); EnableDatasetFilters(Dataset, true, 'ContractID'); grdData.ParentDataFieldName = 'ParentID'; Dataset.Open(); } Dataset.EnableEvents();
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.
В статье Громового, ссылку на которую я давал выше так и написано :) Я не заметил, а Олегу +1 за внимательность :smile:
Спасибо, буду пробовать! А что означает
Dataset.DisableEvents(); Dataset.EnableEvents();
Данные методы отключают и включают обработку событий датасета. Используются, когда при выполнении некоторых действий над датасетом не нужно, чтобы срабатывали обработчики его событий. Например, если в событии OnBeforeOpen датасета Вам необходимо открыть другой экземпляр этого же датасета, то без Dataset.DisableEvents() возникнет зацикливание.
Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.