[CLOSED] Usage of getBody() method

Page 1 of 2 12 LastLast
  1. #1

    [CLOSED] Usage of getBody() method

    Hi,

    Please advise me how to properly migrate the 1.x code segment below. I believe the usage of getBody() may be outdated in my setup.

    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Ext.Net 2.x</title>
        <ext:ResourcePlaceHolder ID="ResourcePlaceHolder1" runat="server" Mode="Script" />
        <ext:ResourcePlaceHolder ID="ResourcePlaceHolder2" runat="server" Mode="Style" />
        <script type="text/javascript">
            var showWindow = function () {
                var wnd = App.Window1;
                wnd.show();
                var windowBody = wnd.getBody();
                // Client error is thrown
                var textField = windowBody.Ext.getCmp("TextField1");
            };
    
        </script>
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server">
        </ext:ResourceManager>
        <ext:Viewport runat="server" Layout="FitLayout">
            <Items>
                <ext:Panel runat="server">
                    <TopBar>
                        <ext:Toolbar runat="server">
                            <Items>
                                <ext:Button ID="Button1" runat="server" Text="Show Window">
                                    <Listeners>
                                        <Click Handler="showWindow();">
                                        </Click>
                                    </Listeners>
                                </ext:Button>
                            </Items>
                        </ext:Toolbar>
                    </TopBar>
                </ext:Panel>
            </Items>
        </ext:Viewport>
        <ext:Window ID="Window1" runat="server" Icon="CogEdit" Title="Edit" Width="500" Height="400"
            Resizable="false" Collapsible="false" Hidden="true" Modal="true">
            <Items>
                <ext:TextField runat="server" ID="TextField1" FieldLabel="Some Text">
                </ext:TextField>
            </Items>
        </ext:Window>
        </form>
    </body>
    </html>
    Last edited by Daniil; Aug 12, 2013 at 4:58 AM. Reason: [CLOSED]
  2. #2
    Hello!

    You should use getBody to get context of document inside iframe but I don't see any iframe object in your sample.

    To get TextField1 you can use:

    App.TextField1
  3. #3
    Apologies, wrong example. Please refer to the updated code sample below.

    Parent.aspx

    <%@ Page Language="C#" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Ext.Net 2.x</title>
        <ext:ResourcePlaceHolder ID="ResourcePlaceHolder1" runat="server" Mode="Script" />
        <ext:ResourcePlaceHolder ID="ResourcePlaceHolder2" runat="server" Mode="Style" />
        <script type="text/javascript">
            var showWindow = function () {
                var wnd = App.Window1;
                wnd.show();
                var windowBody = wnd.getBody();
                var textField = windowBody.Ext.getCmp("TextField1");
            };
    
        </script>
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server">
        </ext:ResourceManager>
        <ext:Viewport runat="server" Layout="FitLayout">
            <Items>
                <ext:Panel runat="server">
                    <TopBar>
                        <ext:Toolbar runat="server">
                            <Items>
                                <ext:Button ID="Button1" runat="server" Text="Show Window">
                                    <Listeners>
                                        <Click Handler="showWindow();">
                                        </Click>
                                    </Listeners>
                                </ext:Button>
                            </Items>
                        </ext:Toolbar>
                    </TopBar>
                </ext:Panel>
            </Items>
        </ext:Viewport>
        <ext:Window ID="Window1" runat="server" Icon="CogEdit" Title="Edit" Width="500" Height="400"
            Resizable="false" Collapsible="false" Hidden="true" Modal="true">
            <Loader ID="Loader1" runat="server" AutoLoad="true" Mode="Frame" Url="Child.aspx">
            </Loader>
        </ext:Window>
        </form>
    </body>
    </html>
    Child.aspx

    <%@ Page Language="C#" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Ext.Net 2.x</title>
        <ext:ResourcePlaceHolder ID="ResourcePlaceHolder1" runat="server" Mode="Script" />
        <ext:ResourcePlaceHolder ID="ResourcePlaceHolder2" runat="server" Mode="Style" />
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server">
        </ext:ResourceManager>
        <ext:Viewport runat="server" Layout="FormLayout">
            <Items>
                <ext:TextField runat="server" ID="TextField1" FieldLabel="Some Text">
                </ext:TextField>
            </Items>
        </ext:Viewport>
        </form>
    </body>
    </html>
  4. #4
    Thank you for update.

    You should wait until your Child window will be loaded:

    <%@ Page Language="C#" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>Ext.Net 2.x</title>
        <ext:ResourcePlaceHolder ID="ResourcePlaceHolder1" runat="server" Mode="Script" />
        <ext:ResourcePlaceHolder ID="ResourcePlaceHolder2" runat="server" Mode="Style" />
        <script type="text/javascript">
            var showWindow = function () {
                var wnd = App.Window1;
                
                if (App.Window1.iframe == undefined) {
                    App.Window1.loader.on('load', function() {
                        var windowBody = wnd.getBody();
                        var textField = windowBody.Ext.getCmp("TextField1");
                    }, this, { delay: 10 });
                } else {
                    var windowBody = wnd.getBody();
                    var textField = windowBody.Ext.getCmp("TextField1");
                }
    
                wnd.show();
            };
    
        </script>
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server">
        </ext:ResourceManager>
        <ext:Viewport runat="server" Layout="FitLayout">
            <Items>
                <ext:Panel runat="server">
                    <TopBar>
                        <ext:Toolbar runat="server">
                            <Items>
                                <ext:Button ID="Button1" runat="server" Text="Show Window">
                                    <Listeners>
                                        <Click Handler="showWindow();">
                                        </Click>
                                    </Listeners>
                                </ext:Button>
                            </Items>
                        </ext:Toolbar>
                    </TopBar>
                </ext:Panel>
            </Items>
        </ext:Viewport>
        <ext:Window ID="Window1" runat="server" Icon="CogEdit" Title="Edit" Width="500" Height="400"
            Resizable="false" Collapsible="false" Hidden="true" Modal="true">
            <Loader ID="Loader1" runat="server" AutoLoad="true" Mode="Frame" Url="Child.aspx">
            </Loader>
        </ext:Window>
        </form>
    </body>
    </html>
  5. #5
    Does it mean that a hidden framed Window isn't loaded completely until brought to the foreground, even with AutoLoad set to "true"?
  6. #6
    Quote Originally Posted by vadym.f View Post
    Does it mean that a hidden framed Window isn't loaded completely until brought to the foreground, even with AutoLoad set to "true"?
    Exactly. I think we discussed it here:
    http://forums.ext.net/showthread.php?25670
  7. #7
    Thanks, I see. One thing I've noticed running Daulet's example was that the TextField disappears from view after the window is presented the second time. I've tried setting AutoLoad to "false" but then the window would show empty even the first time.
  8. #8
    Again, it appears to be reproducible in IE only. It is OK in Chrome and FireFox. I think it is the same issue as here:
    http://forums.ext.net/showthread.php?25665

    As a workaround I can suggest:
    wnd.show(null, function () {
        if (this.iframe) {
            this.iframe.show();
        } 
    });
  9. #9
    Last edited by Daniil; Aug 12, 2013 at 3:59 AM.
  10. #10
    Thanks for the workaround Daniil! I strongly feel that I have to redesign the hidden windows loading pattern in my project because what used to work well in 1.x is no longer functional or reliable in 2.x. I will probably have to drop pre-loading windows on the page loading their content on demand as they are presented the first time.
Page 1 of 2 12 LastLast

Similar Threads

  1. ComponentColumn usage
    By Zdenek in forum 2.x Help
    Replies: 0
    Last Post: Jul 13, 2012, 9:38 AM
  2. Licence (CMS/CRM usage)
    By pentijum in forum Licensing
    Replies: 1
    Last Post: May 02, 2011, 5:28 AM
  3. [CLOSED] Global Static variables usage in DirectEvents Method
    By ogokgol in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Feb 04, 2011, 2:35 PM
  4. [CLOSED] Panel.getBody problem
    By tdracz in forum 1.x Legacy Premium Help
    Replies: 12
    Last Post: Oct 19, 2010, 11:51 AM
  5. [CLOSED] [1.0] getBody() Error In IE8
    By rcaunt in forum 1.x Legacy Premium Help
    Replies: 2
    Last Post: Oct 14, 2010, 2:58 PM

Tags for this Thread

Posting Permissions