Элементы управления RadPanelBar исчезают после добавления элементов динамически

StackOverflow https://stackoverflow.com/questions/1001259

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть вопрос об элементе управления 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top