update htmlchart binding with a grid when filter

1 posts, 0 answers
  1. Manolo
    Manolo avatar
    4 posts
    Member since:
    Sep 2015

    Posted 07 Sep 2015 Link to this post

    Hi,

    I've a grid, and I want show an associated chart. My code works fine, but when I filter the grid, I want that the Chart is binding with the new grid's data.

     My code:

      <div class="col-md-9">
     
            <telerik:RadGrid ID="gridDatos" runat="server" GroupPanelPosition="Top" AllowPaging="True" ShowGroupPanel="True"
                AllowSorting="True" ShowFooter="True" AllowFilteringByColumn="true"
                OnDataBound="gridDatos_DataBound" CellSpacing="-1" GridLines="Both" OnNeedDataSource="gridDatos_NeedDataSource">
    ....
     
            </telerik:RadGrid>
         
        <div class="col-md-3">
            <telerik:RadHtmlChart ID="RadHtmlChart1" runat="server">
            </telerik:RadHtmlChart>
        </div>
     

    Code Behind

    protected void gridDatos_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
           {
               int numeroSemana = 0;
               int estadoOperacion = 0;
               int tipoOperacion = 0;
     
               Int32.TryParse(comboNumeroSemanas.SelectedValue.ToString(), out numeroSemana);
               Int32.TryParse(comboEstadoOperacion.SelectedValue.ToString(), out estadoOperacion);
               Int32.TryParse(comboTipoOperacion.SelectedValue.ToString(), out tipoOperacion);
     
               if (numeroSemana <= 0 || estadoOperacion <= 0 || tipoOperacion <= 0)
                   return;
     
               var datos = GetInforme(numeroSemana, tipoOperacion, estadoOperacion);
               gridDatos.DataSource = null;
               gridDatos.DataSource = datos;
     
           }

    protected void gridDatos_DataBound(object sender, EventArgs e)
            {
                GenerarGrafico();

            }

            private void GenerarGrafico()
            {
                List<InformeProcesado> ds = gridDatos.DataSource as List<InformeProcesado>;

                if (ds == null)
                    return;

                RadHtmlChart1.PlotArea.Series.Clear();

                ColumnSeries serie0 = new ColumnSeries();
                SeriesItem r0 = new SeriesItem();
                r0.YValue = ds.Sum(x => x.Rango0);
                serie0.Items.Add(r0);
                RadHtmlChart1.PlotArea.Series.Add(serie0);

                ColumnSeries serie1 = new ColumnSeries();
                SeriesItem r1 = new SeriesItem();
                r1.YValue = ds.Sum(x => x.Rango1);
                serie1.Items.Add(r1);
                RadHtmlChart1.PlotArea.Series.Add(serie1);

                ColumnSeries serie2 = new ColumnSeries();
                SeriesItem r2 = new SeriesItem();
                r2.YValue = ds.Sum(x => x.Rango2);
                serie2.Items.Add(r2);
                RadHtmlChart1.PlotArea.Series.Add(serie2);

                ColumnSeries serie3 = new ColumnSeries();
                SeriesItem r3 = new SeriesItem();
                r3.YValue = ds.Sum(x => x.Rango3);
                serie3.Items.Add(r3);
                RadHtmlChart1.PlotArea.Series.Add(serie3);

                ColumnSeries serie4 = new ColumnSeries();
                SeriesItem r4 = new SeriesItem();
                r4.YValue = ds.Sum(x => x.Rango4);
                serie4.Items.Add(r4);
                RadHtmlChart1.PlotArea.Series.Add(serie4);

                ColumnSeries serie5 = new ColumnSeries();
                SeriesItem r5 = new SeriesItem();
                r5.YValue = ds.Sum(x => x.Rango5);
                serie5.Items.Add(r5);
                RadHtmlChart1.PlotArea.Series.Add(serie5);

                ColumnSeries serie6 = new ColumnSeries();
                SeriesItem r6 = new SeriesItem();
                r6.YValue = ds.Sum(x => x.Rango6);
                serie6.Items.Add(r6);
                RadHtmlChart1.PlotArea.Series.Add(serie6);

                ColumnSeries serie7 = new ColumnSeries();
                SeriesItem r7 = new SeriesItem();
                r7.YValue = ds.Sum(x => x.Rango7);
                serie7.Items.Add(r7);
                RadHtmlChart1.PlotArea.Series.Add(serie7);
            }​

     

    The chart display in bars the summatory values.

     

    How can I do it?

     

Back to Top