Mar 05, 2011, 8:27 PM
[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".
How can I get the edited values in RecuperarDados function?
Thanks.
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]