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?