[CLOSED] Grid Editor with Summary in data column [1.0]

  1. #1

    [CLOSED] Grid Editor with Summary in data column [1.0]

    Hi,

    I want to know how can I do Dynamically SUM in a row into the GridPanel Editor.

    The Script that get edited rows to my DirectMethods "Salvar" and "AfterEdit".

    <script type="text/javascript">      
    
            function RecuperarDados() {           
                var grd = <%=grpResponsabilidadeTerceiro.ClientID %>;
                data = grd.getRowsValues({selectedOnly : false});
                return data;
            }
    
            function Salvar() {
                Ext.net.DirectMethods.Salvar(RecuperarDados());
            }
    
            var afterEdit = function (e) {
                        
                // Call DirectMethod
                Ext.net.DirectMethods.AfterEdit(RecuperarDados());
            };
        </script>
    GridPanel Code.

                                             
       <ext:GridPanel ID="grpResponsabilidadeTerceiro" runat="server" Title="" StripeRows="true"
                                                    AutoWidth="true" AutoHeight="true" EnableColumnMove="false">
                                                    <Store>
                                                        <ext:Store ID="StoreDetalheResponsabilidade" runat="server">
                                                            <Reader>
                                                                <ext:JsonReader IDProperty="CODIGO_CELULA">
                                                                    <Fields>
                                                                        <ext:RecordField Name="CODIGO_CELULA" Type="Int" />
                                                                        <ext:RecordField Name="NOME_CELULA" Type="String" />
                                                                        <ext:RecordField Name="VALOR_VENCIDO" Type="String" />
                                                                        <ext:RecordField Name="VALOR_VINCENDO" Type="String" />
                                                                        <ext:RecordField Name="VALOR_LP" Type="String" />
                                                                        <ext:RecordField Name="OBSERVACOES" Type="String" />
                                                                        <ext:RecordField Name="TOTALIZADOR" Type="Int" />
                                                                        <ext:RecordField Name="ID_RESP_TERCEIROS" Type="Int" />
                                                                    </Fields>
                                                                </ext:JsonReader>
                                                            </Reader>
                                                        </ext:Store>
                                                    </Store>
                                                    <ColumnModel ID="ColumnModel1" runat="server">
                                                        <Columns>
                                                            <ext:Column Header="Descrição" Width="300" DataIndex="NOME_CELULA" Sortable="false" />
                                                            <ext:Column ColumnID="VALOR_VENCIDO" Header="Vencido Curto Prazo" DataIndex="VALOR_VENCIDO"
                                                                Sortable="false" Width="110">
                                                                <Editor>
                                                                    <ext:TextField ID="txtVencido" runat="server" EnableKeyEvents="true" AllowBlank="false"
                                                                        StyleSpec="text-align:right;" >
                                                                        <Listeners>
                                                                            <Render Handler="if (this.grid.record.get('TOTALIZADOR') == '1') { this.disable(); } else { this.enable(); }" />
                                                                            <KeyUp Fn="MascaraMoeda" />
                                                                            <Change Fn="afterEdit" />
                                                                        </Listeners>
                                                                    </ext:TextField>
                                                                </Editor>
                                                            </ext:Column>
                                                            <ext:Column Header="Vincendo Curto Prazo" DataIndex="VALOR_VINCENDO" ColumnID="VALOR_VINCENDO"
                                                                Sortable="false" Width="120">
                                                                <Editor>
                                                                    <ext:TextField ID="txtVincendo" runat="server" EnableKeyEvents="true" AllowBlank="false"
                                                                        StyleSpec="text-align:right;">
                                                                        <Listeners>
                                                                            <Render Handler="if (this.grid.record.get('TOTALIZADOR') == '1') { this.disable(); } else { this.enable(); }" />
                                                                            <KeyUp Fn="MascaraMoeda" />
                                                                            <Change Fn="afterEdit" />
                                                                        </Listeners>
                                                                    </ext:TextField>
                                                                </Editor>
                                                            </ext:Column>
                                                            <ext:Column Header="Longo Prazo" DataIndex="VALOR_LP" ColumnID="VALOR_LP" Sortable="false">
                                                                <Editor>
                                                                    <ext:TextField ID="txtLongoPrazo" runat="server" EnableKeyEvents="true" AllowBlank="false"
                                                                        StyleSpec="text-align:right;">
                                                                        <Listeners>
                                                                            <Render Handler="if (this.grid.record.get('TOTALIZADOR') == '1') { this.disable(); } else { this.enable(); }" />
                                                                            <KeyUp Fn="MascaraMoeda" />
                                                                            <Change Fn="afterEdit" />
                                                                        </Listeners>
                                                                    </ext:TextField>
                                                                </Editor>
                                                            </ext:Column>
                                                            <ext:Column Header="Observações" DataIndex="OBSERVACOES" ColumnID="OBSERVACOES" Sortable="false">
                                                                <Editor>
                                                                    <ext:TextField ID="txtObservacoes" runat="server">
                                                                        <Listeners>
                                                                            <Render Handler="if (this.grid.record.get('TOTALIZADOR') == '1') { this.disable(); } else { this.enable(); }" />
                                                                        </Listeners>
                                                                    </ext:TextField>
                                                                </Editor>
                                                            </ext:Column>
                                                        </Columns>
                                                    </ColumnModel>
                                                    <Plugins>
                                                        <ext:EditableGrid runat="server" />
                                                    </Plugins>
                                                </ext:GridPanel>
    My DirectMethod that calculate the sum and put it into last row with TOTALIZADOR = 1.

            [DirectMethod]
            public void AfterEdit(string dados)
            {
                var lista = JSON.Deserialize<List<ItemResponsabilidadeTerceiro>>(dados);
    
                Dominio.Entidades.RESP_TERCEIROS item = new RESP_TERCEIROS();
                decimal valorLP, valorVencido, valorVincendo;
                valorVincendo = valorVencido = valorLP = 0;
                foreach (ItemResponsabilidadeTerceiro itemResponsabilidadeTerceiro in lista.OrderBy(o => o.TOTALIZADOR))
                {
                    if (itemResponsabilidadeTerceiro.TOTALIZADOR == 0)
                    {
                        valorLP += decimal.Parse(itemResponsabilidadeTerceiro.VALOR_LP);
                        valorVencido +=
                            decimal.Parse(itemResponsabilidadeTerceiro.VALOR_VENCIDO);
                        valorVincendo +=
                            decimal.Parse(itemResponsabilidadeTerceiro.VALOR_VINCENDO);
                    }
                    else
                    {
                        itemResponsabilidadeTerceiro.VALOR_LP = valorLP.ToString("N");
                        itemResponsabilidadeTerceiro.VALOR_VINCENDO = valorVincendo.ToString("N");
                        itemResponsabilidadeTerceiro.VALOR_VENCIDO = valorVencido.ToString("N");
                    }
                }
    
                StoreDetalheResponsabilidade.DataSource = lista;
                StoreDetalheResponsabilidade.DataBind();            
            }
    So, when the user edits values of txtLongoPrazo, txtValorVincendo and txtValorVencido calls the method "AfterEdit" and I've got calculate the sum. But the values returned in RecuperarDados function are uncommitted values.

    How can I get the edited values in RecuperarDados function?

    Thanks.
    Last edited by Daniil; Mar 15, 2011 at 7:14 AM. Reason: [CLOSED]
  2. #2
    Hi,

    Please try the following thing instead of Change listener.

    Example
    <script type="text/javascript">
        var onBeforeRender = function () {
            this.view.onEditorBlur = this.view.onEditorBlur.createSequence(callDirectMethodFunction);
        }
    </script>
    
    <ext:GridPanel ...>
        ...
        <Listeners>
            <BeforeRender Fn="onBeforeRender" />
        </Listeners>
    </ext:GridPanel>

Similar Threads

  1. Grid Panel Summary Column
    By Mina in forum 1.x Help
    Replies: 3
    Last Post: Jan 02, 2012, 9:03 AM
  2. Grid Column Summary Plugin?
    By huzzy143 in forum 1.x Help
    Replies: 10
    Last Post: Aug 10, 2011, 5:19 PM
  3. [CLOSED] Grid Column Editor
    By Vasudhaika in forum 1.x Legacy Premium Help
    Replies: 4
    Last Post: May 23, 2011, 11:43 AM
  4. Replies: 0
    Last Post: Feb 06, 2011, 4:17 PM
  5. Editor.Add for grid column not working on 0.7?
    By _Belial in forum 1.x Help
    Replies: 9
    Last Post: Mar 25, 2009, 5:12 AM

Tags for this Thread

Posting Permissions