2011-05-10 55 views
0

嘿,伙计们检查了这一点...阿贾克斯TabContainerTabPanels突破回传

<asp:TabContainer ID="jkhgjkgh" runat="server"> 
    <asp:TabPanel ID="jkkljhgh" runat="server" HeaderText="sdkl;fgjl;kgjdf"> 
     <ContentTemplate> 
      <asp:Button ID="jhgkjgh" runat="server" Text="Button" onclick="Button1_Click" /> 
     </ContentTemplate> 
    </asp:TabPanel> 
    <asp:TabPanel ID="jkgh" runat="server" HeaderText="gjdkl;gjdf;g" Visible="false"> 
     <ContentTemplate> 
      <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="dropDownSelect"> 
       <asp:ListItem Text="test" /> 
       <asp:ListItem Text="test" /> 
       <asp:ListItem Text="test" /> 
       <asp:ListItem Text="test" /> 
      </asp:DropDownList> 
     </ContentTemplate> 
    </asp:TabPanel> 

什么疯了...只是一个TabContainer的一对夫妇上板的第二个是隐藏的。

现在我们去后面的代码...

protected void Button1_Click(object sender, EventArgs e) 
    { 
     TabPanel p = new TabPanel(); 

     p.ContentTemplate = jkgh.ContentTemplate; 

     jkhgjkgh.Tabs.Add(p); 
    } 

    protected void dropDownSelect(object sender, EventArgs e) 
    { 
     int i = 0; 
    } 

这里就是这一切发生可怕的事情......

我点击第一个选项卡面板上的按钮来创建一个新的标签是在我的隐藏面板中定义的模板,然后我去那个面板和更改在下拉选择....

它做回传,但下拉事件永远不会引发....

任何想法?

回答

1

问题是,你不能动态复制隐藏的模板tabpanel,并添加一个新的集合。 显然,tabcontainer控件不允许没有很多“黑客入侵”。

我不完全确定为什么,但似乎ITemplate类型不能很好地克隆事件处理。

0

我想这可能是因为你的TabContainer没有将AutoPostBack设置为true。

+0

AutoPostBack(据我了解)决定天气控件应该回发或等到其他事情回来引发事件......在这种情况下,背教实际上正在发生,但下拉事件处理程序没有被称为...足以说我试过这个。 – War 2011-06-10 12:31:45