[CLOSED] Microsoft JScript runtime error: 'RowExpander1' is undefined

  1. #1

    [CLOSED] Microsoft JScript runtime error: 'RowExpander1' is undefined

    I get Javascript error when I use the Row Expander in content page

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <%@ Import Namespace="System.Collections.Generic"%>
    <%@ Import Namespace="ListView=Ext.Net.ListView"%>
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
    if (X.IsAjaxRequest)
    {
    //We do not need to DataBind on an DirectEvent
    return;
    }
    List<object> data = new List<object>();
    for (int i = 1; i <= 10; i++)
    {
    data.Add(new { ID = "S" + i, Name = "Supplier " + i});
    }
    this.Store1.DataSource = data;
    this.Store1.DataBind();
    }
    private void RemoveFromCache(string id)
    {
    X.Js.Call("removeFromCache", id);
    }
    private void AddToCache(string id)
    {
    X.Js.Call("addToCache", id);
    }
    protected void BeforeExpand(object sender, DirectEventArgs e)
    {
    string id = e.ExtraParams["id"];
    Store store = new Store { ID = "StoreRow_"+id };
    JsonReader reader = new JsonReader();
    reader.IDProperty = "ID";
    reader.Fields.Add("ID", "Name");
    store.Reader.Add(reader);
    List<object> data = new List<object>();
    for (int i = 1; i <= 10; i++)
    {
    data.Add(new { ID = "P"+i, Name = "Product " + i });
    }
    store.DataSource = data;
    this.RemoveFromCache(store.ID);
    store.Render();
    this.AddToCache(store.ID);
    GridPanel grid = new GridPanel{
    ID = "GridPanelRow_"+id,
    StoreID = "{raw}StoreRow_" + id,
    Height = 200
    };
    grid.ColumnModel.Columns.Add(new Column
    {
    Header = "Products's Name",
    DataIndex = "Name"
    });
    grid.ColumnModel.ID = "GridPanelRowCM_" + id;
    grid.View.Add(new Ext.Net.GridView { ID = "GridPanelRowView_" + id, ForceFit = true });
    //important
    X.Get("row-" + id).SwallowEvent(new string[] { "click", "mousedown", "mouseup", "dblclick"}, true);
    this.RemoveFromCache(grid.ID);
    grid.Render("row-" + id, RenderMode.RenderTo);
    this.AddToCache(grid.ID);
    }
    </script>
    <script type="text/javascript">
    window.lookup = [];
    var clean = function () {
    if (window.lookup.length > 0) {
    <%=RowExpander1.ClientID%>.collapseAll();
    Ext.each(window.lookup, function (control) {
    if (control) {
    control.destroy();
    }
    });
    window.lookup = [];
    }
    };
    var removeFromCache = function(c){
    var c = window[c];
    window.lookup.remove(c);
    if (c){
    c.destroy();
    }
    }
    var addToCache = function(c){
    window.lookup.push(window[c]);
    }
    </script>
    <ext:ResourceManager ID="ResourceManager1" runat="server" />
    <h1>Row Expander Plugin with GridPanel</h1>
    <p>The caching is presented, GridPanel renders once only (until view refresh)</p>
    <ext:Store ID="Store1" runat="server">
    <Reader>
    <ext:JsonReader IDProperty="ID">
    <Fields>
    <ext:RecordField Name="ID" />
    <ext:RecordField Name="Name" />
    </Fields>
    </ext:JsonReader>
    </Reader>
    </ext:Store>
    <ext:GridPanel
    ID="GridPanel1"
    runat="server"
    StoreID="Store1"
    TrackMouseOver="false"
    Title="Expander Rows with ListView"
    Collapsible="true"
    AnimCollapse="true"
    Icon="Table"
    Width="600"
    Height="600">
    <ColumnModel ID="ColumnModel1" runat="server">
    <Columns>
    <ext:Column Header="Supplier" DataIndex="Name" />
    </Columns>
    </ColumnModel>
    <View>
    <ext:GridView ID="GridView1" runat="server" ForceFit="true">
    <Listeners>
    <BeforeRefresh Fn="clean" />
    </Listeners>
    </ext:GridView>
    </View>
    <SelectionModel>
    <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" />
    </SelectionModel>
    <Plugins>
    <ext:RowExpander ID="RowExpander1" runat="server" EnableCaching="true">
    <Template ID="Template1" runat="server">
    <Html>
    <div id="row-{ID}" style="background-color:White;">
    
    </Html>
    </Template>
    <DirectEvents>
    <BeforeExpand
    OnEvent="BeforeExpand"
    Before="return !body.rendered;"
    Success="body.rendered=true;">
    <EventMask ShowMask="true" Target="CustomTarget" CustomTarget="={GridPanel1.body}" />
    <ExtraParams>
    <ext:Parameter Name="id" Value="record.id" Mode="Raw" />
    </ExtraParams>
    </BeforeExpand>
    </DirectEvents>
    </ext:RowExpander>
    </Plugins>
    </ext:GridPanel>
    </asp:Content>
  2. #2

    RE: [CLOSED] Microsoft JScript runtime error: 'RowExpander1' is undefined

    Hi,

    Please #{} syntax for CustomTarget EventMask (BeforeExpand DirectEvent of the RowExpander)
    CustomTarget="={#{GridPanel1}.body}"
  3. #3

    RE: [CLOSED] Microsoft JScript runtime error: 'RowExpander1' is undefined

    I removed this line of code and I still have the same issue

    <EventMask ShowMask="true" Target="CustomTarget" CustomTarget="={#{GridPanel1}.body}" />
  4. #4

    RE: [CLOSED] Microsoft JScript runtime error: 'RowExpander1' is undefined

    Hi,

    What error do you have? I cannot reproduce any error. Please ensure that you use latest code.
  5. #5

    RE: [CLOSED] Microsoft JScript runtime error: 'RowExpander1' is undefined

    I don't know how it is getting this RowExpander1

    columns:[RowExpander1,{dataIndex:"Name",header:"Supplier"}]})}
    
    new Ext.net.GridPanel({id:"ctl00_ContentPlaceHolder1_GridPanel1",renderTo:"ctl00_ContentPlaceHolder1_GridPanel1_Container",plugins:this.ctl00_ContentPlaceHolder1_RowExpander1=new Ext.grid.RowExpander({proxyId:"ctl00_ContentPlaceHolder1_RowExpander1",tpl:this.ctl00_ContentPlaceHolder1_Template1=new Ext.net.XTemplate({proxyId:"ctl00_ContentPlaceHolder1_Template1",html:["<div id=\"row-{ID}\" style=\"background-color:White;\">
    ",""]}),directEvents:{beforeexpand:{fn:function(el,record,body,rowIndex){var params=arguments;Ext.net.DirectEvent.confirmRequest({formProxyArg:"aspnetForm",extraParams:{id:record.id},before:function(el, type, action, extraParams){return !body.rendered;},userSuccess:function(response, result, el, type, action, extraParams){body.rendered=true;},control:this,action:'BeforeExpand'});},delay:20}}}),height:600,width:600,collapsible:true,iconCls:"icon-table",title:"Expander Rows with ListView",sm:this.ctl00_ContentPlaceHolder1_RowSelectionModel1=new Ext.grid.RowSelectionModel({proxyId:"ctl00_ContentPlaceHolder1_RowSelectionModel1"}),store:ctl00_ContentPlaceHolder1_Store1,view:this.ctl00_ContentPlaceHolder1_GridView1=new Ext.grid.GridView({proxyId:"ctl00_ContentPlaceHolder1_GridView1",forceFit:true,listeners:{beforerefresh:{fn:clean}}}),selectionSavingBuffer:10,selectionMemory:false,cm:this.ctl00_ContentPlaceHolder1_ColumnModel1=new Ext.grid.ColumnModel({proxyId:"ctl00_ContentPlaceHolder1_ColumnModel1",defaultSortable:true,columns:[RowExpander1,{dataIndex:"Name",header:"Supplier"}]})})
  6. #6

    RE: [CLOSED] Microsoft JScript runtime error: 'RowExpander1' is undefined

    Hi,

    Do you use latest code? Try to update from SVN
  7. #7

    RE: [CLOSED] Microsoft JScript runtime error: 'RowExpander1' is undefined

    Please wrap your code samples in [CODE] tags.

    Geoffrey McGill
    Founder
  8. #8

    RE: [CLOSED] Microsoft JScript runtime error: 'RowExpander1' is undefined

    thanks vlad, I updated the svn and it worked
    I tried to edit but I didn't let me after I submited but It keeps asking me to login again

Similar Threads

  1. Replies: 2
    Last Post: May 08, 2012, 3:34 PM
  2. Replies: 5
    Last Post: Mar 16, 2012, 2:47 PM
  3. Replies: 2
    Last Post: Jul 18, 2011, 10:17 PM
  4. Replies: 3
    Last Post: Feb 14, 2011, 1:36 PM
  5. Microsoft JScript runtime error: 'Ext' is undefined
    By Satyanarayana murthy in forum Open Discussions
    Replies: 11
    Last Post: Mar 31, 2010, 11:54 AM

Posting Permissions