[OPEN] [#818] X.AddScript() called in ODS methods fails

  1. #1

    [OPEN] [#818] X.AddScript() called in ODS methods fails

    Hello,
    if I call X.AddScript() (and also X.Call() ) in ODS methods (OnSelecting, OnSelected), while ODS Select is invoked by Ext.Net.Store, nothing happens. If ODS Select is invoked by my code (e.g. in Page_Load), it works well.

    namespace Test
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Ext.Net.X.AddScript("alert('load');");
                //this.ods.Select(); // try use this while removing store
            }
            protected void Unnamed_Selected(object sender, ObjectDataSourceStatusEventArgs e)
            {
                Ext.Net.X.AddScript("alert('selected');");
            }
            protected void Unnamed_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
            {
                Ext.Net.X.AddScript("alert('selecting');");
            }
            public object Select()
            {
                return new { Text = "Text" };
            }
        }
    }
    <ext:ResourceManager ID="resourceManager" runat="server" ShowWarningOnAjaxFailure="false" />
    <asp:ObjectDataSource ID="ods" runat="server" TypeName="Test.WebForm1" SelectMethod="Select" OnSelected="Unnamed_Selected" OnSelecting="Unnamed_Selecting" />
    <ext:Store runat="server" DataSourceID="ods">
                <Model>
                    <ext:Model runat="server">
                        <Fields>
                            <ext:ModelField Name="Text" />
                        </Fields>
                    </ext:Model>
                </Model>
            </ext:Store>
    Thanks for help!

    Ladislav
    Last edited by Daniil; Jun 26, 2015 at 8:22 PM. Reason: [OPEN] [#818]
  2. #2
    Hi @ambruslaco,

    Thank you for the report! Created an Issue:
    https://github.com/extnet/Ext.NET/issues/818

    Auto data binding is triggered too late for .AddScript() to be working in those events.

    Please use this workaround:
    protected void Page_Load(object sender, EventArgs e)
    {
        Ext.Net.X.AddScript("alert('load');");
        this.Store1.DataBind();
    }
  3. #3
    Thanks for reply.

    How can I determine in code, if its too late for .AddStript() so I should execute some other steps? I use it in general exception handler.
  4. #4
    The scripts added by .AddScript() are handled in a ResourceManager's Render method. So, if a ResourceManager is rendered, .AddScript() actually stops working.

    In your scenario we recommend to use a ResourceManager's .RegisterOnReadyScript() method.
    protected void Unnamed_Selected(object sender, ObjectDataSourceStatusEventArgs e)
    {
        this.resourceManager.RegisterOnReadyScript("alert('selected');");
    }

Similar Threads

  1. Replies: 3
    Last Post: Sep 26, 2014, 7:32 PM
  2. [CLOSED] [#511] Resource manager addscript in IE
    By iansriley in forum 2.x Legacy Premium Help
    Replies: 10
    Last Post: Jun 23, 2014, 9:36 AM
  3. ScriptManager.AddScript()
    By tonymayoral in forum 1.x Help
    Replies: 0
    Last Post: Feb 04, 2010, 4:28 PM
  4. Calling AddScript multiple times?
    By dbassett74 in forum 1.x Help
    Replies: 4
    Last Post: May 14, 2009, 7:27 PM
  5. [CLOSED] AddScript Bug
    By davidhoyt in forum 1.x Help
    Replies: 7
    Last Post: Nov 12, 2008, 1:51 PM

Tags for this Thread

Posting Permissions