Веб-части, динамически созданные элементы управления и обработчики событий - PullRequest
0 голосов
/ 26 августа 2009

Каков наилучший способ отображения в веб-части динамических таблиц, в которых каждая ячейка может вызвать обратную передачу для отображения различного набора данных?

Например, представьте некоторые финансовые данные:

Table 1:  Quarters in year

         |   Q1  |  Q2  |  Q3  |  Q4  |
Things 1 |   23  |  34  |  44  |  32  |
Things 2 |   24  |  76  |  67  |  98  |

Если щелкнуть значение Q2, Вещи 1 (34), это приведет к отображению второй таблицы вместо Таблицы 1:

Table 2:  Weeks in Quarter

            |   W1  |  W2  |  W3  |  W4  |  W5  |  W6  |  W7  |
SubThings 1 |   231 |  22  |  44  |  22  | 344  |  86  |  12  |
SubThings 2 |   14  |  75  |  47  |  108 | 344  |  86  |  12  |

Проблема с подходом, который я использую в данный момент, заключается в том, что я могу создать Таблицу 1 в CreateChildControls, что приводит к тому, что все события в порядке для всех кнопок ссылок в ячейках.

Однако, поскольку при обратной передаче мне нужно снова создать таблицу 1 в CreateChildControls, чтобы правильно обработать обработчики событий, и когда события запускаются после CreateChildControls, я знаю только, что мне нужно изменить таблицу после CreateChildControls.

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

Есть мысли?

С уважением Moo

Редактировать: Решено.

Что вам нужно сделать, это проверить в OnPreRender любые вызовы обработчика событий, установить все необходимые флаги и затем вызвать this.CreateChildControls вручную, чтобы создать новую таблицу и все правильно подключено.

Ответы [ 3 ]

0 голосов
/ 26 августа 2009

Просто добавьте 2 таблицы в свою веб-часть, скрывайте вторую, пока в первой не будет нажат элемент, затем установите источник данных второй таблицы в обработчике событий OnClick, установите вторую сетку видимой, а первую - скрытой ...

0 голосов
/ 10 сентября 2009

По предложению Алекса вот ответ:

События должны быть связаны до того, как они были вызваны, поэтому вам нужно создать тот же элемент управления в CreateChildControls, разрешить вызов события, а затем выполнить сброс всего после него.

Чтобы сделать это, сначала выполните CreateChildControls идентично предыдущей странице, затем проверьте в OnPreRender, были ли сделаны какие-либо вызовы обработчика событий, установите все необходимые флаги и затем вызовите this.CreateChildControls вручную с новой информацией о настройке, чтобы новая таблица создан и все правильно подключено.

0 голосов
/ 26 августа 2009

Похоже, вы говорите о ситуации мастер / деталь. Не могли бы вы создать две веб-части и использовать соединение веб-частей для передачи необходимой информации из таблицы 1 в первой веб-части в таблицу 2 во второй веб-части?

J

...