Can XRender created control use server event?

  1. #1

    [1.0]Can XRender created control use server event?

    Hi all,

    I use XRender to create controls during DirectMethods, the problem is, can the created controls correctly register there server event?

    e.g, the created button's DirectClick, when click, server error happened:

    "The control with ID 'TestButton1' not found ", it seems the server didn't find the control, how to deal with the problem?

    Full test code below:
    <%@ Page Language="C#" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
        [DirectMethod]
        public DirectResponse CreateTestBtn( )
        {
            DirectResponse result = new DirectResponse( );
            result.Success = false;
            try
            {
                Ext.Net.Button testBtn = new Ext.Net.Button( "Test" );
              testBtn.ID = "TestButton1";
              testBtn.DirectClick += new ComponentDirectEvent.DirectEventHandler( TestButton_Click );
              this.Form.Controls.Add( testBtn );
              testBtn.Render( );
     
                result.Success = true;
            }
            catch( Exception ex )
            {
                result.ErrorMessage = ex.Message;
            }
            return result;
        }
        protected void TestButton_Click( object sender, DirectEventArgs e )
        {
        }
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
            var createBtn = function( ) {
                Ext.net.DirectMethods.CreateTestBtn( {
                    eventMask: {
                        showMask: true,
                        minDelay: 200,
                        msg: 'loading'
                    },
                    success: function( result ) {
                        if( result.Success ) {
                        }
                        else if( result.ErrorMessage ) {
                            //showErrMsg( 'Error', result.ErrorMessage );
                        }
                    }
                });
            };
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server">
        </ext:ResourceManager>
        <div>
            <ext:Button runat="Server" ID="BtnCreate" Text="CreateButton">
                <Listeners>
                    <Click Fn="createBtn" />
                </Listeners>
            </ext:Button>
        </div>
        </form>
    </body>
    </html>
    Last edited by firebank; Jul 12, 2010 at 3:12 PM.
  2. #2
    Hi firebank,

    The issue is the DirectEvent does not exist on the second (DirectEvent) request. The client-side configuration is being properly rendered, but when the Button gets clicked, its looking for a server-side event handler that does not exist... because it has not been (re)created during the second request.

    The best work-around I can suggest is to configure the Button <Click> Listener to call a [DirectMethod] instead of a DirectEvent.

    Hope this helps.
    Geoffrey McGill
    Founder
  3. #3
    Thank you Geoffrey, your advice give me much help. :-)

Similar Threads

  1. Replies: 0
    Last Post: Feb 06, 2012, 1:59 PM
  2. Replies: 4
    Last Post: Jul 08, 2011, 4:23 PM
  3. Replies: 5
    Last Post: Jun 29, 2010, 7:23 AM
  4. [CLOSED] [1.0] get value of dinamically created control
    By miguelon in forum 1.x Legacy Premium Help
    Replies: 5
    Last Post: Mar 27, 2010, 4:01 PM
  5. Replies: 10
    Last Post: Dec 22, 2009, 10:22 AM

Tags for this Thread

Posting Permissions