在一个TabContainer的我想表现出各种不同的标签将包含不同的用户控件。我需要的用户控制分配到通过代码标签,而不是分配用户控件作为其通常在标签内进行,例如:
<ajaxToolkit:TabPanel runat="server" HeaderText="NOMBRE" ID="TabPanel1" Enabled ="true" >
<ContentTemplate>
</ContentTemplate>
</ajaxToolkit:TabPanel>
我需要什么,这并不工作。
因此,这里是我的代码的标签分配给用户控件,它的代码的休耕:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Control ctrlNombre = LoadControl("~/UserCtrl/Nombre.ascx"); //user control
TabPanel1.Controls.Add(ctrlNombre); //add user control to tabpanel
}
}
和事件“onactivetabchanged”我根据创建一个菜单上的选项卡被激活,将加载控件,这里是代码:
protected void TabContainer1_ActiveTabChanged(object sender, EventArgs e)
{
switch(TabContainer1.ActiveTabIndex)
{
case 0:
Control ctrl1 = LoadControl("~/UserCtrl/userControl1.ascx");
TabPanel1.Controls.Add(ctrlNombre);
break;
case 1:
Control ctrl2 = LoadControl("~/UserCtrl/ userControl2.ascx");
TabPanel1.Controls.Add(ctrlApPaterno);
}
}
然而,这实际上做的工作,当我从一些用户控件中单击某个按钮时出现问题,这使得一个完整的回发到服务器,因为它通常会做,但是这回发会导致用户控制以前加载消失。我能做些什么来解决这个问题?我真的希望有人会帮助我在这一个,我会很感激。
下面是当我点击一个按钮,会发生什么情况的图像:
谢谢你这么多,大家好,我希望有人能帮助我解决这个问题。
您可能需要在回发的Page_init时重新创建标签面板,因为他们已经做出,直到不上后背上存在tabpanels ...
所以在Page_init你应该调用一个函数,使得默认的选项卡集合,然后后来在页面上,你可以一个新的选项卡面板添加到集合。
protected void Page_Init(object sender, EventArgs e)
{
Control ctrlNombre = LoadControl("~/UserCtrl/Nombre.ascx"); //user control
TabPanel1.Controls.Add(ctrlNombre); //add user control to tabpanel
}
参考:
http://dorababu-meka.blogspot.com/2012/12/create-dynamical-ajax-tab-and-filling.html http://www.c-sharpcorner.com/uploadfile/Ravish001/create-dynamic-tabs-using-ajax-tab-container-add-controls-read-them-dynamically/
希望这是有道理的。