IPostBackEventHandler不会在异步回发时触发RaisePostBackEvent

kjv*_*kjv 1 asp.net postback asynchronous

我设计了一个自定义用户控件,基本上是一个实现IPostBackEventHandler界面的按钮,显然定义了RaisePostBackEvent(string eventArgument)方法,在那里我做了一些处理,基本上我触发了其他事件.

默认情况下,单击时,我的控件将执行__doPostBack其客户端ID以进行整页刷新,当然还会触发RaisePostBackEvent.

但是,我希望能够使用控件刷新更新面板,因此从客户端我使用__doPostBack带有更新面板ID和另一个参数的方法.

问题是RaisePostBackEvent没有触发.我知道我可以查看Page.Request.Params["__EVENTARGUMENT"]并做任何我需要的事情,但我真的想要一些简单而优雅的东西,IPostBackEventHandler以便拥有我控制下的所有逻辑.

长话短说,RaisePostBackEvent如果我有异步回发,我怎么能触发?或者是否有另一个具有类似功能的界面?

Joh*_*ino 6

问题是(如果我理解你的问题),调用__doPostBack的控件必须实现IPostBackEventHandler接口.所以,例如,如果我在usercontrol(实现IPostBackEventHander)中有这个标记:

<asp:Button runat="server"
     UseSubmitBehavior="false" ID="Button"
     Text="Update"
     OnClientClick="myfunction();"/>
Run Code Online (Sandbox Code Playgroud)

myfunction javascript必须如下所示:

<script type="text/javascript">
    function myfunction(param)   
    {
        __doPostBack("<%= this.UniqueID %>", "myargs");    
    }
</script>
Run Code Online (Sandbox Code Playgroud)

请注意,我发送this.UniqueID而不是Button.UniqueID,因为该按钮没有实现IPostBackEventHander,但是usercontrol却没有.