Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > динамическое добавление AsyncPostBackTrigger


Автор: dickens 28.5.2007, 14:38
в UpdatePanel динмически добавляю PostBackTrigger для некоторой кнопки.
Код

        protected void Page_Load(object sender, EventArgs e)
        {
        PostBackTrigger PostBackTrigger1 = new PostBackTrigger();
        PostBackTrigger1.ControlID = this.button2.ID;
        this.UpdatePanel1.Triggers.Add(PostBackTrigger1);
        }

проблема в следующем. когда я нажимаю на кнопку, для которой я добавил PostBackTrigger, все отлично, постбек происходит, но как только я нажимаю на кнопку для котороый нет PostBackTrigger, происходит асинхронный постбэк, и после чего PostBackTrigger слетает, все начинает работать на асинхронных постбеках. 

вот так выглядит содержимое UpdatePanel'и
Код

<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" RenderMode="Block" UpdateMode="Always">
    <ContentTemplate>
        <asp:Button ID="button1" runat="server" OnClick="button1_Click" Text="show panel1"/>
        <asp:Button ID="button2" runat="server" OnClick="button2_Click" Text="show panel2" />
        <asp:Panel ID="Panel1" runat="server" Height="50px" Width="125px" Visible="true">
            <asp:Label ID="Label2" runat="server" Text="panel 1"></asp:Label>
        </asp:Panel>
        <asp:Panel ID="Panel2" runat="server" Height="50px" Width="125px" Visible="false">
            <asp:Label ID="Label1" runat="server" Text="panel 2"></asp:Label>
            <asp:Button ID="button3" runat="server" Text="button3" OnClick="button3_Click" />
            <asp:label ID="label3" runat="server"></asp:label>
        </asp:Panel>
    </ContentTemplate>
</asp:UpdatePanel>


вот обработчики событий на нажатие кнопок

Код

    protected void button1_Click(object sender, EventArgs e)
    {
        this.Panel1.Visible = true;
        this.Panel2.Visible = false;
        this.Label1.Text = "panel 1";
    }

    protected void button2_Click(object sender, EventArgs e)
    {
        this.Panel2.Visible = true;
        this.Panel1.Visible = false;
        this.Label2.Text = "panel 2";
        
    }

    protected void button3_Click(object sender, EventArgs e)
    {
        this.label3.Text = DateTime.Now.ToString();
    }



не подскажите как сделать что бы PostBackTrigger'ы не слетали?

заранее спасибо.

Автор: Gretchen 2.7.2007, 00:49
я только начинаю работать с asp.net и ajax, но помоему дело в UpdateMode="Always". Надо поменять на Conditional. Тогда UpdatePanel реагирует только на определённые триггеры.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)