Ajax TabContainer选项卡面板中断回发

时间:2011-05-10 16:07:03

标签: c# asp.net ajax tabcontainer

嘿伙计们检查出来......

<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;
    }

这就是可怕的错误...

我单击第一个选项卡面板上的按钮以创建一个新选项卡,其中包含在我的隐藏面板中定义的模板,然后转到该面板并在下拉列表中更改选择....

它会进行回发,但永远不会引发下拉事件....

任何想法???

2 个答案:

答案 0 :(得分:1)

问题在于您无法动态复制隐藏的模板化tabpanel并将新的一个添加到集合中。 显然,tabcontainer控件在没有大量“黑客攻击”的情况下不允许这样做。

我不完全确定原因,但似乎ITemplate类型无法很好地克隆事件处理。

答案 1 :(得分:0)

我认为可能是因为您的TabContainer没有将AutoPostBack设置为true。