2017-02-15 23 views
0

У меня простая форма, в моем DataSource Я создал классический displayMethod (с именем calculateAmount) и использую этот метод для отображения значения в сетке формы.Как скрыть запись в сетке форм на основе значения метода отображения?

Так что это можно показать только записи, имеющие определенное значение из calculateAmount, например, я хочу показать только запись, имеющую calculateAmount()> 0, другая запись с вычисленной calculateAmount() < 0 не показывать ,

Так что, если я не могу смешивать запросы и displayMethod, возможно, где я могу вставить условие (например активныйExecuteQuery и т.д.)?

Спасибо за консультацию.

+0

Если расчетная сумма рассчитывается с использованием существующих полей таблицы, это поможет вам http://stackoverflow.com/questions/11312013/is-it-possible-to-filter-a-datasource-getting-the-condition- from-a-calculate-fi –

ответ

2

Рассмотрим следующую последовательность:

  1. Выполнить запрос называется и запрос АОТ переводится в SQL запрос
  2. Результаты извлекаются из сервера SQL после executeQuery()
  3. Метод отображения вызывается для каждой записи, а затем значения показаны на сетке

Таким образом, вы не можете добавить диапазон запросов на execute query основанный на значении метода отображения.

Одна вещь, вы можете сделать:

  1. Дублировать таблицу источника данных и установите его Таблица Тип недвижимость TempDB
  2. В executeQuery методе написать логику, чтобы заполнить эту новую созданную таблицу
  3. Здесь вы можете добавить это условие, как это:

    if ([your data source].calculateAmount() > 0) { // do not add the record in temp table } else { // add the record in temp table }

  4. Установите вашу таблицу темпа в качестве источника данных для вашей сетки.

Надеюсь, это поможет!

+0

Или вы можете использовать представление с вычисленным столбцом (при условии, что вы можете вычислить значение с помощью SQL). https://msdn.microsoft.com/en-us/library/gg845841.aspx –

+0

Спасибо @Numan Ijaz, хорошее решение. – ulisses