Programmatic creation of the RadWindowManager (getting Microsoft JScript runtime error: 'null' is null or not an object)

4 posts, 0 answers
  1. Vladimir Gosic
    Vladimir Gosic avatar
    15 posts
    Member since:
    May 2010

    Posted 01 Jul 2010 Link to this post

     Hello,

    I am creating the RadWindowManager in the Page.Init event handler on every PostBack using the following code:

    Dim cmdWindowManager As RadWindowManager = New RadWindowManager 
    cmdWindowManager.ID = "CommandWindowManager" 
     
    Dim cmdWindow As RadWindow = New RadWindow 
    cmdWindow.ID = "CommandWindow" 
    cmdWindow.ReloadOnShow = True 
    cmdWindow.ShowContentDuringLoad = False 
    cmdWindow.Modal = True 
    cmdWindow.AutoSize = True 
    cmdWindow.Width = Unit.Pixel(450) 
    cmdWindow.Height = Unit.Pixel(150) 
     
    cmdWindowManager.Windows.Add(cmdWindow) 
     
    contentContainer.Controls.Add(cmdWindowManager) 

    where contentContainer is an AspPanel in my ContentPage, which means I am using MasterPage also. I must add the RadWindowManager programmatic because it is done in a BasePage class from which all other content pages inherit.

    I have tried many combination of the JavaScript that would show me the RadWindow, but I never got to see it shown. Here are two approaches that I tried (I am passing the RadWindowManager.ClientId to the function that generates the bellow JavaScripts).
    The JavaScript I am adding everytime to the contentContainer (also on Page.Init) is:

    function ShowEditForm(formUrl, formTitle) {  
    var oWnd = window.radopen(formUrl, formTitle);  
    return false;  
    }  
      
    function ShowInsertForm(formUrl, formTitle) {  
    alert('test');  
    var oWnd = $find(ctl00_ContentPlaceHolderMain_CommandWindowManager).GetWindowByName('CommandWindow');  
    oWnd.SetUrl(formUrl);  
    oWnd.Show(); 
    return false;  
    }   

    and the code that I am adding to the same contentContainer after the Grid.ItemCommand event is:
    ' configure Client Script for Command Items 
    Dim radCodeBlockAction As RadScriptBlock = New RadScriptBlock 
    Dim script As New LiteralControl("<script type=""text/javascript"" language=""javascript""> " & Environment.NewLine & _ 
                                             String.Format(ACTION_FUNCTION_FORMAT, _ 
                                                           ActionFunction, _ 
                                                           ActionFormUrl, _ 
                                                           FormTitle) & Environment.NewLine & _ 
                                             "</script>"
     
    ' the result of String.Format is "ShowInsert('edit.aspx','CommandWindow')" 
     
    radCodeBlockAction.Controls.Clear() 
    radCodeBlockAction.Controls.Add(script) 
     
    contentContainer.Controls.Add(radCodeBlockAction) 



    So the code gets executed but client script debugger stops at:

    var oWnd = window.radopen(formUrl, formTitle);  
    or:
    var oWnd = $find(ctl00_ContentPlaceHolderMain_CommandWindowManager).GetWindowByName('CommandWindow');


    with the error: Microsoft JScript runtime error: 'null' is null or not an object.
    Could you please give me a quick response.

    Thank you in advance!

    Regards,
    Vladimir



  2. Georgi Tunev
    Admin
    Georgi Tunev avatar
    7207 posts

    Posted 06 Jul 2010 Link to this post

    Hello Vladimir,

    Try calling the script that opens the RadWindow at a later stage - for example you could use window.setTimeout(). I believe that the reason for the problem is that you are trying to execute radopen() before the RadWindow / RadWindowManager is fully rendered on the page. Such behavior is expected because ASP.NET AJAX controls (including our RadControls) are created in Sys.Application.Init() - you can verify that by examining the HTML dump of a page with ASP.NET AJAX controls in it.


    Regards,
    Georgi Tunev
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  3. Vladimir Gosic
    Vladimir Gosic avatar
    15 posts
    Member since:
    May 2010

    Posted 06 Jul 2010 Link to this post

    Hello Georgi,

    Thank you for your answer. I managed to resolve the issue myself, but forgot to post the solution here. I concluded that the script was being called to early, so I used:

    Sys.Application.add_load(function(){ShowInsertForm('edit.aspx','CommandWindow')}) 

    and the RadWindow loads as expected.

    I now have the issue that after the RadWindow is closed by using "GetRadWindow().close();" or using X on the window, and after that some control on the parent Page invokes PostBack I get a ViewState error stating that Control tree/count is invalid. I managed to temporarily bypass it by calling Response.Redirect to the Page itself on close, but I would like to use only Grid.Rebind(). Is this a common issue or should I post more details about the problem?

    Regards,
    Vladimir

  4. Georgi Tunev
    Admin
    Georgi Tunev avatar
    7207 posts

    Posted 07 Jul 2010 Link to this post

    Hello Vladimir,

    I don't think this issue is related to the RadWindow control - I believe you would get the same behavior if you call the JavaScript function (that you call in RadWindow's OnClientClose) directly.
    I don't know what exactly you do on the server in the postback, but in general such error occurs if you try to modify some controls - I suggest to check the exact error message in Google for more information on the subject.
    In any case, I would suggest to consider using Ajax instead of postbacks. For example, if you are using RadAjax, you could use ajaxRequest() for calling server-side functions from the client.

    All the best,
    Georgi Tunev
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Back to Top