Элементы управления RadPanelBar исчезают после добавления элементов динамически
Вопрос
У меня есть вопрос об элементе управления Telerik RadPanelBar.
Например, у нас есть элемент управления RadPanelBar в форме:
<telerik:RadPanelBar ID="testPanelBar" runat="server">
</telerik:RadPanelBar>
и кнопка, которая добавляет новый элемент в этот RadPanelBar во время выполнения:
RadPanelItem newParentItem = new RadPanelItem();
RadPanelItem newChildItem = new RadPanelItem();
newChildItem.Controls.Add(new RadTextBox());
newChildItem.Text = "wazzap";
newParentItem.Items.Add(newChildItem);
languagesPanelBar.Items.Add(newParentItem);
когда я нажимаю кнопку, добавляется новый RadPanelItem со всеми дочерними элементами управления (в данном случае это RadTextBox в дочернем элементе)
при повторном нажатии кнопки добавляется второй RadPanelItem со всеми элементами управления, но на этот раз
Элемент управления RadTexBox исчез из первого RadPanelItem.
И то же самое, когда кнопка нажимается в третий раз, новый элемент добавляется со всеми элементами управления, но RadTextBox исчезнет с 1-го и 2-го элементов.
Я делаю что-то не так при динамическом добавлении элементов?
Спасибо!
Решение
Это происходит потому, что динамически созданные элементы управления, добавленные к другим динамически создаваемым элементам управления, теряются после обратной передачи. Вам нужно воссоздавать их при каждой загрузке страницы. Насколько я знаю, нет решения этой проблемы. Вы также можете легко воспроизвести его с помощью класса Page, в page_load попробуйте Controls.Add (new TextBox ()); Затем после обратной передачи тот же код не будет генерировать новое (второе) текстовое поле, но будет воссоздавать позднее. Р>
Все элементы PanelBar (даже динамически созданные) сериализуются на клиенте и после постбэка воссоздаются на сервере. И именно поэтому они не потеряны. Однако то же самое не относится к дочерним элементам управления объекта RadPanelItem.