This is a migrated thread and some comments may be shown as answers.

[Solved] calculations with columns

1 Answer 148 Views
GridView
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Josemar Maia
Top achievements
Rank 1
Josemar Maia asked on 04 Nov 2010, 09:02 PM
In the example below when calculating the "Total Price" multiplying the value of "quantity" by "Unit Price" column after informing the "Unit Price" column and go to the "Total Price" column the value of "Total Price" is calculated normally. If I go to any other column of the grid the value of "Total Price" is not calculated. What should I do to fix this?

<UserControl x:Class="SilverlightApplication1.MainPage"
    mc:Ignorable="d"            
    xmlns:dataFormToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit"
    xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input"
    xmlns:grid="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView"
    VerticalAlignment="Top"  Width="548" Height="570">
 
  <Grid Name="LayoutRoot" Loaded="LayoutRoot_Loaded">
    <grid:RadGridView  Name="CotacaoGrid" AutoGenerateColumns="False" ShowGroupPanel="False" Width="490"
                       DataContext="{Binding}" Height="217" IsFilteringAllowed="False" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                       SelectionChanged="CotacaoGrid_SelectionChanged"
                       VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0,40,0,0" >
      <grid:RadGridView.Columns>
        <grid:GridViewDataColumn Header="Código" DataMemberBinding="{Binding Codigo}" />
        <grid:GridViewDataColumn Header="Nome" DataMemberBinding="{Binding Nome}" />
        <grid:GridViewDataColumn Header="Descrição" DataMemberBinding="{Binding Descricao}" />
        <grid:GridViewDataColumn Header="Data" DataMemberBinding="{Binding Data}" />
        <grid:GridViewDataColumn Header="Situação" DataMemberBinding="{Binding Situacao}" />
        <grid:GridViewDataColumn Header="Data Entrega" DataMemberBinding="{Binding DataEntrega}" />
        <grid:GridViewDataColumn Header="IdMaster" DataMemberBinding="{Binding IdMaster}" />
        <grid:GridViewDataColumn Header="CodigoFornecedor" DataMemberBinding="{Binding IdMaster}" />
      </grid:RadGridView.Columns>
    </grid:RadGridView>
 
    <grid:RadGridView  Name="CotacaoProdutoGrid" AutoGenerateColumns="False" ShowGroupPanel="False" Width="Auto"
                       DataContext="{Binding}" Height="200" IsFilteringAllowed="False" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0,290,0,0"
                       CellEditEnded="CotacaoProdutoGrid_CellEditEnded" BeginningEdit="CotacaoProdutoGrid_BeginningEdit" IsScrolling="False"
                       IsTabStop="True" IsSynchronizedWithCurrentItem="True" CanUserFreezeColumns="False">
      <grid:RadGridView.Columns>
        <grid:GridViewDataColumn Header="Código" DataMemberBinding="{Binding CodigoProduto}" />
        <grid:GridViewDataColumn Header="Marca" DataMemberBinding="{Binding Marca}" />
        <grid:GridViewDataColumn Header="Observação" DataMemberBinding="{Binding Observacao}" />
        <grid:GridViewDataColumn Header="Quantity" DataMemberBinding="{Binding Quantidade}" />
        <grid:GridViewDataColumn Header="Unit Price" DataMemberBinding="{Binding ValorUnitario}" DataFormatString="{}{0:c}"/>
        <grid:GridViewDataColumn Header="Total Price" DataMemberBinding="{Binding ValorTotal}" />
        <grid:GridViewDataColumn x:Name="teste01"  />
      </grid:RadGridView.Columns>
    </grid:RadGridView>
  </Grid>
</UserControl>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Resources;
using System.Windows;
using System.Windows.Controls;
using Telerik.Windows.Controls;
 
namespace SilverlightApplication1
{
  public partial class MainPage : UserControl
  {
    public MainPage()
    {
      InitializeComponent();
    }
 
    List<ListaCampos.Campos> listaCotacao = new List<ListaCampos.Campos>();
 
    private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
    {
      listaCotacao = new List<ListaCampos.Campos>();
 
      ListaCampos.Campos camposCotacao = new ListaCampos.Campos();
 
      camposCotacao.Codigo = "01";
      camposCotacao.Nome = "Microsoft";
      camposCotacao.Descricao = "Software";
      camposCotacao.IdMaster = "0000000001";
      camposCotacao.Data = "20/10/2010";
      camposCotacao.Situacao = "Open";
      camposCotacao.CodigoFornecedor = "1";
      camposCotacao.DataEntrega = "20/12/2010";
 
      listaCotacao.Add(camposCotacao);
 
      ListaCampos.Campos camposCotacao2 = new ListaCampos.Campos();
      camposCotacao2.Codigo = "02";
      camposCotacao2.Nome = "Dell";
      camposCotacao2.Descricao = "HardWare";
      camposCotacao2.IdMaster = "0000000002";
      camposCotacao2.Data = "01/11/2010";
      camposCotacao2.Situacao = "Open";
      camposCotacao2.CodigoFornecedor = "3";
      camposCotacao2.DataEntrega = "20/11/2010";
 
      listaCotacao.Add(camposCotacao2);
 
      ListaCampos.Campos camposCotacao1 = new ListaCampos.Campos();
      camposCotacao1.Codigo = "01";
      camposCotacao1.Nome = "Borland";
      camposCotacao1.Descricao = "Software";
      camposCotacao1.IdMaster = "0000000001";
      camposCotacao1.Data = "20/10/2010";
      camposCotacao1.Situacao = "Open";
      camposCotacao1.CodigoFornecedor = "2";
      camposCotacao1.DataEntrega = "20/12/2010";
 
      listaCotacao.Add(camposCotacao1);
 
      ListaCampos.Campos camposCotacao3 = new ListaCampos.Campos();
      camposCotacao3.Codigo = "02";
      camposCotacao3.Nome = "IBM";
      camposCotacao3.Descricao = "HardWare";
      camposCotacao3.IdMaster = "0000000002";
      camposCotacao3.Data = "01/11/2010";
      camposCotacao3.Situacao = "Open";
      camposCotacao3.CodigoFornecedor = "4";
      camposCotacao3.DataEntrega = "20/11/2010";
 
      listaCotacao.Add(camposCotacao3);
 
      CotacaoGrid.ItemsSource = listaCotacao;
    }
 
    public string ValorCodigo { get; set; }
 
    public string ValorTexto { get; set; }
 
    private void CotacaoGrid_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangeEventArgs e)
    {
      ListaCampos.Campos teste = (CotacaoGrid.SelectedItem as ListaCampos.Campos);
      ValorCodigo = teste.IdMaster.ToString();
      ValorTexto = teste.CodigoFornecedor.ToString();
 
      List<ListaCampos.Campos> listaCotacaoProduto = new List<ListaCampos.Campos>();
 
      if (ValorCodigo == "0000000001")
      {
 
        ListaCampos.Campos camposCotacao1 = new ListaCampos.Campos();
 
        camposCotacao1.IdMaster = "0000000001";
        camposCotacao1.CodigoProduto = "125";
        camposCotacao1.Marca = "Rad Developer";
        camposCotacao1.Observacao = "Urgente";
        camposCotacao1.Quantidade = 5;
        camposCotacao1.ValorUnitario = 0;
        camposCotacao1.ValorTotal = 0;
 
        listaCotacaoProduto.Add(camposCotacao1);
 
        ListaCampos.Campos camposCotacao2 = new ListaCampos.Campos();
 
        camposCotacao2.IdMaster = "0000000001";
        camposCotacao2.CodigoProduto = "126";
        camposCotacao2.Marca = "Rad Tester";
        camposCotacao2.Observacao = "Urgente";
        camposCotacao2.Quantidade = 5;
        camposCotacao2.ValorUnitario = 0;
        camposCotacao2.ValorTotal = 0;
 
        listaCotacaoProduto.Add(camposCotacao2);
 
      }
 
      if (ValorCodigo == "0000000002")
      {
 
        ListaCampos.Campos camposCotacao1 = new ListaCampos.Campos();
 
        camposCotacao1.IdMaster = "0000000002";
        camposCotacao1.CodigoProduto = "486";
        camposCotacao1.Marca = "Desktop Computer";
        camposCotacao1.Observacao = "Urgente";
        camposCotacao1.Quantidade = 5;
        camposCotacao1.ValorUnitario = 0;
        camposCotacao1.ValorTotal = 0;
 
        listaCotacaoProduto.Add(camposCotacao1);
 
        ListaCampos.Campos camposCotacao2 = new ListaCampos.Campos();
 
        camposCotacao2.IdMaster = "0000000002";
        camposCotacao2.CodigoProduto = "586";
        camposCotacao2.Marca = "Power Supply";
        camposCotacao2.Observacao = "Urgente";
        camposCotacao2.Quantidade = 5;
        camposCotacao2.ValorUnitario = 0;
        camposCotacao2.ValorTotal = 0;
 
        listaCotacaoProduto.Add(camposCotacao2);
 
      }
      CotacaoProdutoGrid.ItemsSource = listaCotacaoProduto;
    }
 
    public object produtoRegistroSelecionado { get; set; }
 
    private void CotacaoProdutoGrid_BeginningEdit(object sender, GridViewBeginningEditRoutedEventArgs e)
    {
      produtoRegistroSelecionado = CotacaoProdutoGrid.CurrentItem;
    }
 
    private void CotacaoProdutoGrid_CellEditEnded(object sender, GridViewCellEditEndedEventArgs e)
    {
      ListaCampos.Campos teste = (produtoRegistroSelecionado as ListaCampos.Campos);
      teste.ValorTotal = teste.ValorUnitario * teste.Quantidade;
    }
  }
 
  public class ListaCampos
  {
 
    public class Campos
    {
      public string Codigo { get; set; }
 
      public string Nome { get; set; }
 
      public string Descricao { get; set; }
 
      public string IdMaster { get; set; }
 
      public string Data { get; set; }
 
      public string DataEntrega { get; set; }
 
      public string Marca { get; set; }
 
      public string Situacao { get; set; }
 
      public string CodigoFornecedor { get; set; }
 
      public string Observacao { get; set; }
 
      public double Quantidade { get; set; }
 
      public double ValorUnitario { get; set; }
 
      public double ValorTotal { get; set; }
 
      public string CodigoProduto { get; set; }
 
    }
 
  }
 
}

1 Answer, 1 is accepted

Sort by
0
Vlad
Telerik team
answered on 05 Nov 2010, 08:09 AM
Hi,

 We are about to provide built-in powerful calculated column for the grid with our Q3 2010 release and my suggestion is to wait a bit (a week) to get this. 

Kind regards,
Vlad
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
Tags
GridView
Asked by
Josemar Maia
Top achievements
Rank 1
Answers by
Vlad
Telerik team
Share this question
or