如何在异步模式下触发UserControl内UpdatePanel内的按钮?

时间:2014-08-06 20:27:03

标签: c# asp.net updatepanel asyncpostbackerror

... EDITED

我在UserPatrol内的UpdatePanel中有一个ASP.NET按钮。

我想通过点击UserControl的按钮(btnSubmit)来显示IMAGE。

使用以下js函数我可以在正常回发模式下执行此操作,但它不能在异步模式下工作。

问题是,如何在异步模式下执行此操作或执行此操作的最佳方法是什么?

用户控制(类别):

<asp:UpdatePanel ID="upItems" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="btnSubmitPostBack();"/>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

ASP.NET页面

<script>
    function btnSubmitPostBack() {
        __doPostBack('<%= btnDoSomething.ClientID %>', '');
    }
</script>

<asp:UpdatePanel ID="up" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
            <uc1:Categories ID="Categories1" runat="server" CatRootName="Products" />
            <asp:Button ID="btnDoSomething" CssClass="hidden" runat="server" Text=" Do Something" OnClick=" btnDoSomething_Click" />
             <asp:Image ID="Image1" runat="server" Visible="false" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnDoSomething" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

protected void btnDoSomething_Click(object sender, EventArgs e)
{
    Image1.Visible = true;
    up.Update();
}

提前感谢您的关注和帮助!

1 个答案:

答案 0 :(得分:1)

好的,我们去吧:(刚编译并成功运行)我认为这是正确的方法:(这里的关键是找到其他用户控件并在其中钻取以便控制到更新:

您的用户控制代码:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Categories.ascx.cs" Inherits="WebApplication1.Categories" %>

<asp:UpdatePanel ID="upItems" runat=*emphasized text*"server" UpdateMode="Conditional">
    <ContentTemplate>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click"/>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

用户控制代码:

 protected void btnSubmit_Click(object sender, EventArgs e)
        {
            UpdatePanel ImageUpdatePanel = (UpdatePanel)this.Parent.FindControl("up");

            Image _img = (Image)ImageUpdatePanel.FindControl("Image1");

            _img.Visible = true;
            //Updating UpdatePanel
            ImageUpdatePanel.Update();
        }

然后是您的网页代码

    <asp:UpdatePanel ID="up" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
            <uc1:Categories ID="Categories1" runat="server" CatRootName="Products" />
            <asp:Button ID="btnDoSomething" CssClass="hidden" runat="server" Text=" Do Something"/>
             <asp:Image ID="Image1" runat="server" Visible="false" ImageUrl="~/Images/heroAccent.png" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnDoSomething" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

这是100%可行的解决方案,如果您需要我也可以发送代码:)