I have designed a custom user control, basically a button, that implements the IPostBackEventHandler interface, and obviously defines the RaisePostBackEvent(string eventArgument) method, where I do some processing, basically I trigger other events. 
By default, when clicked my control will execute __doPostBack its client id for a full page refresh, and of course RaisePostBackEvent is triggered.
However, I want to be able the use the control to refresh an update panel, so from client side I use the __doPostBack method with the ID of the update panel and an additional argument. 
The problem is that RaisePostBackEvent is not triggered. I know i could look in Page.Request.Params["__EVENTARGUMENT"] and do whatever I need, but I would really like something as simple and elegant as IPostBackEventHandler so as to have all the logic in my control. 
Long story short, how can I trigger RaisePostBackEvent in case I have an asynchronous postback? Or is there another interface that with similar functionality?
- 
                        The thing is (if I understand your question correctly) that the control that calls the __doPostBack must implement IPostBackEventHandler interface. So, for example if I have this markup in a usercontrol (that implements the IPostBackEventHander): <asp:Button runat="server" UseSubmitBehavior="false" ID="Button" Text="Update" OnClientClick="myfunction();"/>The myfunction javascript must look like this: <script type="text/javascript"> function myfunction(param) { __doPostBack("<%= this.UniqueID %>", "myargs"); } </script>Notice that I send this.UniqueID and not the Button.UniqueID because the button does not implement IPostBackEventHander but the usercontrol does. iulianchira : The thing is that in the control I have an update panel and through an asynchronous postback I have to update just the content of the update panel so in my javascript function I say `__doPostBack("updatePanelID", "myargs");` and the method `RaisePotsBackEvent` is never called, even though my control implements the `IPostBackEventHandler` interface.Johan Leino : But UpdatePanel does not implement IPostBackEventHandler, or am I missing something? So you can´t send the Id of the UpdatePanel as the first argument to __DoPostBack(...) you have to send the Id of your control and also the Unique (namingcontainer id) of that control.
 
0 comments:
Post a Comment