提问人:Kardo 提问时间:8/7/2014 最后编辑:Kardo 更新时间:8/7/2014 访问量:1887
如何在异步模式下触发页面的事件,UserControl内UpdatePanel内的按钮?
How to fire an event of a page in Async mode a button inside an UpdatePanel inside a UserControl?
问:
编辑。。。
我在 UpdatePanel 中有一个 ASP.NET Button,在 UserControl 中。
我想通过单击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赞
Adam
8/7/2014
#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% 有效的解决方案,如果您需要,我也可以将代码发送给您:)
评论
0赞
Kardo
8/7/2014
关于你的答案,我试过了,但没有用。我还更新了我的问题。无论如何,谢谢!
0赞
Adam
8/7/2014
请看编辑,我已经重新编码并得到了你想要的结果!
0赞
Kardo
8/11/2014
干得好,伙计!他们在这里的关键是这个。Parent.FindControl() 中。我不知道这样的事情是可能的。多谢!
评论