RadWindow broken in 1001

7 posts, 0 answers
  1. Michael
    Michael avatar
    84 posts
    Member since:
    May 2008

    Posted 05 Oct 2008 Link to this post

    Hi

    My RadWindow code worked in 826 but not in 1001.

    I am returning a value from a radwindow to refresh a RadGrid.

    Here is the page code:

    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"
        <script type="text/javascript"
            function ShowEditForm(id, rowIndex) { 
                var grid = $find("<%= gvwTransactions.ClientID %>"); 
     
                var rowControl = grid.get_masterTableView().get_dataItems()[rowIndex].get_element(); 
                grid.get_masterTableView().selectItem(rowControl, true); 
     
                window.radopen("transaction-details.aspx?TransactionId=" + id, "TransactionListDialog"); 
                return false; 
            } 
            function ShowInsertForm(id, node) { 
                window.radopen("transaction-details.aspx?ItemId=" + id + "&SelNode=" + node, "TransactionListDialog"); 
                return false; 
            } 
            function ShowMoveForm(id, node) { 
                window.radopen("move-stock.aspx?ItemId=" + id + "&SelNode=" + node, "TransactionListDialog"); 
                return false; 
            } 
            function ShowTransferForm(id, node) { 
                window.radopen("transfer-split.aspx?ItemId=" + id + "&SelNode=" + node, "TransactionListDialog"); 
                return false; 
            } 
            function refreshGrid(arg) { 
                switch (arg) { 
                    case 'Rebind': 
                        $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("Rebind"); 
                        break; 
                    case 'RebindAlsoTable': 
                        $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("RebindAlsoTable"); 
                        break; 
                    case 'RebindAndNavigate': 
                        $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("RebindAndNavigate"); 
                        break; 
                    case 'RebindAndNavigateAlsoTable': 
                        $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("RebindAndNavigateAlsoTable"); 
                        break; 
                    default: 
                        $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("RebindAndNavigateAlsoTable"); 
                } 
            } 
        </script> 
    </telerik:RadCodeBlock> 


    And here is the code in the radwindow

        <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"
        <script type="text/javascript"
        function CloseAndRebind(args) 
        { 
            GetRadWindow().Close(); 
            GetRadWindow().BrowserWindow.refreshGrid(args); 
        } 
     
        function GetRadWindow() 
        { 
            var oWindow = null
            if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog 
            else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;//IE (and Moz as well) 
                 
            return oWindow; 
        } 
     
        function CancelEdit() 
        { 
            GetRadWindow().Close(); 
        } 
        </script> 
        </telerik:RadCodeBlock> 

    Any idea why the closeandrebind event does not work?

    It says GetRadWindow is not defined.

    Thanks
  2. Georgi Tunev
    Admin
    Georgi Tunev avatar
    7207 posts

    Posted 06 Oct 2008 Link to this post

    Hi Michael,

    Could you please send me a small sample project where this problem can be reproduced? I am asking you this because the GetRadWindow() function is not changed in the latest release and the code is working fine - you can check it in our Returning Values from a Dialog demo.



    All the best,
    Georgi Tunev
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Vincent Russell
    Vincent Russell avatar
    4 posts
    Member since:
    Apr 2007

    Posted 06 Oct 2008 Link to this post

    Hi,

    I can corroborate this behaviour.  I use the same code as Michael and get "BrowserWindow is null or not an object" when running the CloseAndRebind function.

    When I roll back to version 826 it works with no errors.

    I was beginning to think there was something I was missing in my code until I saw Michael's post.  So thanks for pointing me in the right direction!

    V.

  5. Marco Piumi
    Marco Piumi avatar
    29 posts
    Member since:
    Apr 2005

    Posted 06 Oct 2008 Link to this post

    I have also this problem, with the previous version It worked  and now no more.

    It's a problem, since I must deliver the product in next days.

    I thought graves a my error, even if knew that before it worked.

    Thanks to Michael for the post.
    At least I do not lose other time

  6. Georgi Tunev
    Admin
    Georgi Tunev avatar
    7207 posts

    Posted 07 Oct 2008 Link to this post

    Guys,

    I just checked this scenario and everything is working on my side. The exact same logic is used in the Window Editing demo and it is working there as expected as well.

    Please send us a sample project in a support ticket and we will check it right away - if there is any problem, we will do our best to provide you with a solution right away.


    Greetings,
    Georgi Tunev
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  7. Marco Piumi
    Marco Piumi avatar
    29 posts
    Member since:
    Apr 2005

    Posted 07 Oct 2008 Link to this post

    I resolved the problem  !!!

    The cause of the problem was object returned by RadWindow() after windows is closed : this object was null.

     

    Parking the object returned by RadWindows() in a variable, after window closing, the variable is not null and it worked fine !

    I confirm that previous version worked, while the new version don't work with the code of your example.


     
    function GetRadWindow() {  
        var oWindow = null;  
        if (window.radWindow) oWindow = window.radWindow;  
        else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;  
        return oWindow;  
    }  
     
    function Close() {  
        var hidden = document.getElementById("hidden_CodiceCommessa").value;  
        
        var win = GetRadWindow
    ();  
        if (hidden == "")  
            win.Close();  
        else {  
            win.Close(hidden);  
            win.BrowserWindow.SubmitPage();  
        }  
    }  
     

    I hope of being be clear.
  8. Georgi Tunev
    Admin
    Georgi Tunev avatar
    7207 posts

    Posted 08 Oct 2008 Link to this post

    Hi guys,

    Thanks to Michael that sent us a reproduction code, we managed to find the reason for the problem. For convenience I am pasting my reply to him below:

    Hello Michael,

    Thank you very much for the code - it helped us find the problem. In your code you have set DestroyOnClose to true (this property is set to false in the Window Editing demo and that is why there the problem does not exist). When DestroyOnClose is set to true, RadWindow's object will be destroyed once the window is closed. The code in the content page however states:
    GetRadWindow().Close();
    GetRadWindow().BrowserWindow.refreshGrid(args);


    What happens is that the first line is executed and the window is closed. When the second line of code takes action however, RadWindow does not exist anymore, hence the error. To fix it, you simply need to switch the 2 lines:
    GetRadWindow().BrowserWindow.refreshGrid(args);
    GetRadWindow().Close();


    e.g. to update the grid first and then to close the window.


    On a side note, I strongly recommend to check your client code and to edit it so it match the naming convention of the new framework.
    Note that currently RadWindow supports both naming conventions for backward compatibility, however at some point in the future when the migration is over, we might remove the old methods and your code will not work.


    All the best,
    Georgi Tunev
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017