Я столкнулся с интересной проблемой при попытке клонировать панель шаблонов в моем элементе управления ajax tabcontainer.
Идея состоит в том, что у меня есть пользовательский элемент управления на первой вкладке, который перечисляет некоторые вещи и добавляетновая вещь, которую вы нажимаете новую кнопку в пользовательском элементе управления, которая вызывает событие в элементе управления / странице, содержащей вкладку-контейнер.Затем этот элемент управления / страница выполняет клонирование скрытой панели вкладок и добавление клона в контейнер вкладок.
с этой разметкой я получаю то, что мне нужно, как на первой вкладке (содержащей список), так и на всех последующих вкладках (на основе скрытой панели вкладок, готовой к клонированию) ...
<asp:TabContainer ID="TabContainer1" runat="server">
<asp:TabPanel ID="ui_pnl1" HeaderText="My Panel" runat="server">
<ContentTemplate>
<cc1:myListOfThings ID="list" runat="server" OnMyEvent="CreateTabFromTemplate" />
</ContentTemplate>
</asp:TabPanel>
<asp:TabPanel ID="TemplatePanel" runat="server" Visible="false">
<HeaderTemplate>
<span>Hello World</span><asp:LinkButton ID="ui_btnRemove" runat="server" Text="x" />
</HeaderTemplate>
<ContentTemplate>
Some content for my panel
</ContentTemplate>
</asp:TabPanel>
</asp:TabContainer>
Хорошо, теперь давайте предположим, что на первой панели моего пользовательского элемента управления у меня есть кнопка, которая вызывает событие «MyEvent», которое, в свою очередь, вызывает метод «CreateTabFromTemplate».
Теперь я хочу скопировать скрытоепанель «TemplatePanel» и добавьте ее в контейнер вкладок.
В моем коде код метода для добавления новой панели вкладок в контейнер вкладок работает примерно так ...
protected void CreateTabFromTemplate(object sender, EventArgs e)
{
// create a new tab panel
TabPanel newPanel = new TabPanel();
// instantiate the hidden content template from the hidden note panel in the new panel
ui_tpNoteCreator.ContentTemplate.InstantiateIn(newPanel);
// add the panel to the available tabs and select it
TabContainer1.Tabs.Add(newPanel);
TabContainer1.ActiveTab = newPanel;
}
Пока все выглядит хорошо ... но я что-то упустил ... Я не задал шаблон заголовка новой вкладки ... кажется, все, что я могу сделать, это установить текст.
Следуя этому примеру: http://forums.asp.net/t/1108611.aspx/1 Я могу делать то, что пытаюсь сделать, но я не хочу писать класс, который определяет мой шаблон заголовка. Я хочу создать экземпляр моей версии разметки и передать этот экземпляр моей новой программе.nel.
Я не уверен, что это можно сделать ... это ошибка с контролем или я что-то пропустил?!?!
Есть идеи?