Существует ли способ обработать динамическое изменение выпадающего для одной строки в основанном на сетке datawindow?

Существует ли способ обработать динамическое изменение выпадающего для одной строки в основанном на сетке datawindow?

Пример:

NAME    LIKABILITY         PURCHASED IN  COLOUR
(Text)  (DropDown*)        (Text)        (Text)
Bananas [Good]             Hands         Yellow
        [Bad]
        [Bananas are good]

Apples  [Good]             Bags          Red
        [Bad]

Учитывая вышеупомянутое основанный на сетке datawindow, где поля NAME,PURCHASED IN и COLOUR текстовые поля, где как LIKABILITY поле является dropdown*.

Я говорю выпадающий*, потому что то же визуальное представление может быть создано при помощи DropDownList (hardcoded в datawindow элементе во время проектирования), или DropDownDW (или DDDW, избранный оператор, который может быть основан на других элементах в datawindow).

Однако нет никакого способа, которым я могу добраться Bananas наличие, которое это 3, выпадает, в то время как Яблоки имеют только 2.

Если я ввожу несколько строк Bananas, затем все строки имеют 3, выпадает, но как только я добавляю строку Яблок, все выпадает, возвращаются к 2 выборам.

Чтобы попытаться достигнуть этой функциональности, я попробовал следующие опции:

  1. dw_1.Object.likability.values("Good~tG/Bad~tB/Bananas are good~tDRWHO") на ue_itemchange при редактировании ИМЕНИ.

    СБОИ: редактирования все экземпляры ПРИВЛЕКАТЕЛЬНОСТИ вместо текущей строки.

  2. Дубликат Выпадает, фильтруя один, один нефильтрованный список выбора на строку, видимую на основе выбора ИМЕНИ.

    СБОИ: не может установить столбцы видимости/наложения на основанном на сетке datawindow. (Источник)

  3. Дисплей твердого кода оценивает как значение Базы данных, или Наоборот. Иметь GOOD,BAD,BANANASAREGOOD как дисплей и значения базы данных и обработка изменения опций от G, B, DRWHO к этим новым значениям.

    СБОИ: 3-я опция появляется для всех строк, все еще можно выбрать на строках Apple, который является неправильным.

  4. DDDW получают список опций для выпадающего. Создайте DDDW, который использует значение ИМЕНИ для определения, какие выборы это должно иметь для выпадающего.

    СБОИ: редактирования все экземпляры выпадающего, не только текущая строка.

  5. DDDW еще получают счетчик доступных опций (если B затем 3 2), то имеют дублирующиеся выпадающие столбцы, которые защищают/оставляют без защиты на основе счетчика DDDW.

    СБОИ: не Может выбрать значение dddw автоматически для заполнения столбца для порождения, защищают на других двух столбцах, ужасное решение в любом случае.

Существует теперь щедрость по этому вопросу для любого, кто может дать мне решение, которое позволит мне отредактировать выпадающий столбец для одной строки на основанном на сетке datawindow в ПБ 10.5

8
задан Seki 22 July 2013 в 19:25
поделиться

3 ответа

Вы можете редактировать содержимое кодовой таблицы в событии rowfocuschanged. Поскольку одновременно можно раскрыть только одно раскрывающееся меню, это должно обеспечить необходимый пользовательский интерфейс.

Вы не можете изменить кодовую таблицу на основе выражения, как, например, размер шрифта к сожалению.

Если вам нужно больше контроля над раскрывающимся списком, вы можете сделать его DropDownDW. Вы можете повторно получить его в RowFocusChanged, передав значение из второго столбца.

3
ответ дан 5 December 2019 в 21:17
поделиться

Создайте фиктивный столбец в выбранном элементе, достаточно большой, чтобы вместить отображаемое значение. Используйте DropDownDataWindow в этом столбце, используя столбец отображаемого значения как для отображаемого значения, так и для значения данных. Когда вы извлекаете DataWindow, заполните этот столбец, найдя правильные значения (подсказка: используйте DDDW для реального скрытого столбца и вызовите LookUpDisplay (), убедитесь, что фильтр очищен, когда вы это делаете); затем вызовите ResetUpdate (). Отфильтруйте значения в раскрывающемся списке по желанию в соответствии со значениями в текущей строке. В событии ItemChanged, когда значение фиктивного столбца изменяется, получите код из DDDW (DDDW будет в правильной строке, когда столбец будет в фокусе) и измените значение в скрытом столбце, затем измените состояние фиктивного столбца на NotModified. . Поскольку фиктивный столбец содержит отображаемое значение, фильтрация DDDW не приведет к отображению кода. Новые строки и обновление позаботятся о себе сами.

0
ответ дан 5 December 2019 в 21:17
поделиться

Итак, ответ на ваш вопрос - нет, у вас не может быть уникального содержимого в DropDownListBoxes (или DropDownDataWindows, если на то пошло) построчно.

Решение вашей проблемы более сложное. Вы можете изменить содержимое раскрывающегося списка в RowFocusChanged, но что произойдет с презентацией в строках, где значение кода больше не находится в списке значений? Отображается только кодовое значение. Это не здорово, когда вы не в определенном ряду, если вместо красного отображается R. Итак, обычным решением является наличие двух элементов управления, расположенных непосредственно друг над другом для представления этих данных: один, который отображается, когда строка находится в фокусе (раскрывающийся список безотносительно ), и тот, который отображается когда фокус находится на какой-либо другой строке, это показывает отображаемое значение кода. Раньше я делал это со статическим текстом или фиктивным столбцом в стиле редактирования в качестве второго элемента управления и устанавливал значение в ItemChanged первого столбца. Однако сегодня утром я предполагаю, что вы могли бы сделать это без сценария, если бы второй элемент управления был раскрывающимся столбцом, указывающим на тот же столбец в наборе данных, который всегда содержал полный набор значений.Я оставлю эксперимент (и несколько других частей, необходимых для выполнения этой работы, например, что происходит, когда пользователь щелкает второй элемент управления в другой строке) на ваше усмотрение.

Удачи,

Терри.


Приложение

Вы спросили, как все делается строка за строкой. Для вас это будет как Рождество (или какой-нибудь другой массовый праздник получения подарков, соответствующий культурным традициям). Видите на панели «Свойства» в средстве рисования DataWindow все элементы, у которых справа есть кнопка со знаком равенства? Это позволяет вам ввести выражение, которое будет оцениваться построчно для определения значения атрибута. Чтобы ввести выражение так, чтобы поле было видно только в текущей строке?

if (getrow() = currentrow(), 1, 0)

Вы также можете Modify () эти выражения во время выполнения. Я предоставлю вам помощь, чтобы откопать это. Справка также дает вам список атрибутов для каждого элемента управления DataWindow, который включает в таблицу, принимает ли каждый атрибут выражение или нет. (Кнопки равенства не составляют 100% истории; не все выражаемые атрибуты могут быть выражены через IDE.)

Дополнительное примечание: если вы получите выражения и научитесь ими управлять, вы получите мощь DataWindow. .

Что касается сеток, мое второе предложение о столбце над столбцом, очевидно, не будет работать в сетках. Пришло время вернуться к использованию столбца и статического текста, например, с помощью скрипта ItemChanged.

Т.

4
ответ дан 5 December 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: