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?