03.07.2014, 13:19 | #1 |
Участник
|
Изменение грида с виртуальными полями
Здравствуйте!
Есть грид на форме. После применения фильтров он выводит 10 строчек. В гриде 2 поля: "каталожный номер" и "сумма". Причем "каталожный номер" - реальное поле одной из таблиц датасорса, А "сумма" - виртуальное поле грида полученное с помощью дисплей методов. Так вот мне надо пробежаться циклом по этим 10 строчкам и там где "каталожный номер"="06.11069-0179 " в поле "сумма" всадить значение "2514656". Как же апдейтить эти виртуальные поля? По какому объекту пробегаться циклом? К таблице? -никак она не содержит поля "сумма" К гриду? - неуверен как это сделать(будет ли он показывать все поля в том числе виртуальные, будет ли он обрабатывать только 10 отфильтрованных строчек,) Я Новичок,Дисплей методы читал и на форуме смотрел |
|
03.07.2014, 13:52 | #2 |
Участник
|
То есть для определённого номера каталога Вам нужно выводить в поле сумма указанное значение, а остальные значения в этом поле будут пустыми?
Дисплей метод содержит функцию, которая возвращает значение требуемого типа в созданное поле на гриде формы (на форме в принципе) для каждой строки грида. Использование дисплей метода не подразумевает наличия циклов по записям, дисплей методы вычисляются на уровне AOS для каждой строки последовательно. В контексте Вашего варианта это выглядит как хардкод, что не очень хорошо. |
|
03.07.2014, 14:22 | #3 |
Участник
|
Виртуальное поле грида полученное с помощью дисплей метода, другими словами - вычисляемое поле. Т.е значения этого поля вычисляются при помощи какой-то формулы/алгоритма. Что-бы повлиять на значение этого поля ("всадить", как вы выразились, туда другое значение) очевидно нужно либо изменить формулу/алгоритм расчета либо входные данные, которые используются расчетом.
|
|
03.07.2014, 14:27 | #4 |
Участник
|
Да не надо вам ничего всаживать.
У вас на датасоурсе или таблице есть display-метод. В теле этого метода нужно анализировать значение Каталожного номера, и возвращать из метода соответствующее значение. Например: X++: display int myDisplayMethod(MyTable _myTable) { Int ret; ; if (_myTable.< > == "06.11069-0179 ") ret = 100; else ret = 2514656; return ret; } Как-то так )). |
|
03.07.2014, 14:29 | #5 |
Участник
|
|
|
03.07.2014, 16:15 | #6 |
Участник
|
|
|
03.07.2014, 16:24 | #7 |
Участник
|
|
|