[CLOSED] Adding grouping summary columns in AjaxEvent

  1. #1

    [CLOSED] Adding grouping summary columns in AjaxEvent

    Hi,

    Is it possible to add GroupingSummaryColumn to a grid in an AjaxEvent? In the code below, when I click 'Load Set2' button and then try to group by the 'String' column, I receive JavaScript error.

    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
       
        private void AddField( RecordField field )
        {
            if ( Ext.IsAjaxRequest )
            {
                this.Store1.AddField( field );
            }
            else
            {
                this.Store1.Reader.Reader.Fields.Add( field );
            }
        }
    
        private void BindSet1()
        {
            string now = DateTime.Now.TimeOfDay.ToString();
            this.Store1.DataSource = new object[]
                {
                    new object[] {"Set1_1", 1, now},
                    new object[] {"Set1_2", 2, now},
                    new object[] {"Set1_3", 3, now}
                };
            this.Store1.DataBind();
        }
    
        private void BuildSet1()
        {
            if ( Ext.IsAjaxRequest )
            {
                this.Store1.RemoveFields();
            }
    
            this.AddField( new RecordField( "StringField" ) );
            this.AddField( new RecordField( "IntField", RecordFieldType.Int ) );
            this.AddField( new RecordField( "Timestamp" ) );
    
            this.BindSet1();
    
            this.GridPanel1.ColumnModel.Columns.Add( new Column { DataIndex = "StringField", Header = "String" } );
            this.GridPanel1.ColumnModel.Columns.Add( new GroupingSummaryColumn { DataIndex = "IntField", Header = "Int", SummaryType = SummaryType.Sum } );
            this.GridPanel1.ColumnModel.Columns.Add( new Column { DataIndex = "Timestamp", Header = "Timestamp" } );
    
            if ( Ext.IsAjaxRequest )
            {
                this.GridPanel1.Reconfigure();
            }
        }
    
        private void BindSet2()
        {
            string now = DateTime.Now.TimeOfDay.ToString();
            this.Store1.DataSource = new object[]
                {
                    new object[] {1, "Set2_1", 1, now},
                    new object[] {2, "Set2_2", 2, now},
                    new object[] {3, "Set2_3", 3, now},
                    new object[] {4, "Set2_4", 4, now},
                    new object[] {5, "Set2_5", 5, now},
                    new object[] {6, "Set2_6", 6, now}
                };
            this.Store1.DataBind();
        }
    
        private void BuildSet2()
        {
            if ( Ext.IsAjaxRequest )
            {
                this.Store1.RemoveFields();
            }
    
            this.AddField( new RecordField( "IntField1", RecordFieldType.Int ) );
            this.AddField( new RecordField( "StringField" ) );
            this.AddField( new RecordField( "IntField2", RecordFieldType.Int ) );
            this.AddField( new RecordField( "Timestamp" ) );
    
            this.BindSet2();
    
            this.GridPanel1.ColumnModel.Columns.Add( new Column { DataIndex = "IntField1", Header = "Int1" } );
            this.GridPanel1.ColumnModel.Columns.Add( new Column { DataIndex = "StringField", Header = "String" } );
            this.GridPanel1.ColumnModel.Columns.Add( new GroupingSummaryColumn { DataIndex = "IntField2", Header = "Int2", SummaryType = SummaryType.Sum } );
            this.GridPanel1.ColumnModel.Columns.Add( new Column { DataIndex = "Timestamp", Header = "Timestamp" } );
    
            if ( Ext.IsAjaxRequest )
            {
                this.GridPanel1.Reconfigure();
            }
        }
    
        private void RefreshSet()
        {
            switch ( CurrentSet.Text )
            {
                case "1":
                    this.BindSet1();
                    break;
                case "2":
                    this.BindSet2();
                    break;
            }
        }
    
        protected void Page_Load( object sender, EventArgs e )
        {
            if ( !Ext.IsAjaxRequest )
            {
                this.BuildSet1();
            }
        }
    
        protected void RefreshDataSet( object sender, StoreRefreshDataEventArgs e )
        {
            switch ( e.Parameters["set"] )
            {
                case "1":
                    this.BuildSet1();
                    CurrentSet.Text = "1";
                    break;
                case "2":
                    this.BuildSet2();
                    CurrentSet.Text = "2";
                    break;
                default:
                    this.RefreshSet();
                    break;
            }
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <ext:ScriptManager ID="ScriptManager1" runat="server" />
        <ext:Store ID="Store1" runat="server" OnRefreshData="RefreshDataSet" IgnoreExtraFields="false">
            <Reader>
                <ext:ArrayReader>
                </ext:ArrayReader>
            </Reader>
        </ext:Store>
        <ext:GridPanel ID="GridPanel1" runat="server" StoreID="Store1" Title="Grid" Width="600" Height="350">
            <SelectionModel>
                <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="true" />
            </SelectionModel>
            <View>
                <ext:GroupingView ID="GroupingView1" HideGroupedColumn="true" runat="server" ForceFit="true" StartCollapsed="false" GroupTextTpl="{text}" EnableRowBody="true">
                </ext:GroupingView>
            </View>
            <Buttons>
                <ext:Button ID="Button1" runat="server" Text="Load Set1" EnableToggle="true" ToggleGroup="set" Pressed="true">
                    <Listeners>
                        <Click Handler="#{GridPanel1}.store.reload({params:{set:1}});" />
                    </Listeners>
                </ext:Button>
                <ext:Button ID="Button2" runat="server" Text="Load Set2" EnableToggle="true" ToggleGroup="set">
                    <Listeners>
                        <Click Handler="#{GridPanel1}.store.reload({params:{set:2}});" />
                    </Listeners>
                </ext:Button>
                <ext:Button ID="Button3" runat="server" Text="Refresh current set">
                    <Listeners>
                        <Click Handler="#{GridPanel1}.store.reload();" />
                    </Listeners>
                </ext:Button>
            </Buttons>
            <Plugins>
                <ext:GroupingSummary ID="GroupingSummary1" runat="server">
                </ext:GroupingSummary>
            </Plugins>
        </ext:GridPanel>
        <ext:Hidden ID="CurrentSet" runat="server" Text="1">
        </ext:Hidden>
        </form>
    </body>
    </html>

    Regards,
    Tadeusz
  2. #2

    RE: [CLOSED] Adding grouping summary columns in AjaxEvent

    Hi,

    It is fixed. Please update from SVN.*
    Also for your example there is need to clear store's groupField *before build set. Please add the following code before calling BuildSet1 and BuildSet2
    ScriptManager1.AddScript("{0}.groupField = false;", Store1.ClientID);
  3. #3

    RE: [CLOSED] Adding grouping summary columns in AjaxEvent

    Awesome! Thank you.

    Tadeusz

Similar Threads

  1. [CLOSED] Grouping Summary
    By majestic in forum 1.x Legacy Premium Help
    Replies: 2
    Last Post: Aug 18, 2011, 6:42 AM
  2. [CLOSED] Summary Columns for GridPanel without any Grouping
    By r_honey in forum 1.x Legacy Premium Help
    Replies: 3
    Last Post: Apr 22, 2010, 12:54 AM
  3. [CLOSED] Grouping summary
    By majestic in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Dec 23, 2009, 1:33 PM
  4. [CLOSED] Remote grouping or grouping summary for GridPanel
    By jchau in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Nov 08, 2009, 10:23 PM
  5. Summary Row Without Grouping
    By Tbaseflug in forum 1.x Help
    Replies: 0
    Last Post: Apr 27, 2009, 2:59 PM

Posting Permissions