Winnovative control offers the possibility to handle the ChartClick event.
private System.Data.DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{
dt = Winnovative.DataSources.GetTestData();
if (!IsPostBack)
{
LoadChartType();
WebChart1.DataSource = dt;
}
}
protected void DdlChartType_SelectedIndexChanged(object sender, EventArgs e)
{
WebChart1.ChartType = (Winnovative.ChartType)Enum.Parse(typeof(Winnovative.ChartType), DdlChartType.SelectedValue);
LitData.Text = string.Empty;
}
private void LoadChartType()
{
DdlChartType.Items.Clear();
string[] types = Enum.GetNames(typeof(Winnovative.ChartType));
for (int i = 0; i <= types.Length - 1; i++)
{
DdlChartType.Items.Add(types[i]);
}
}
protected void WebChart1_ChartClick(object sender, Winnovative.ChartClickEventArgs e)
{
LitData.Text =
"Record index: " + e.RecordIndex + "<br>" +
"Column index: " + e.ColumnIndex + "<br>" +
"X Axis label: " + dt.Rows[e.RecordIndex]["Labels"].ToString() + "<br>" +
"Y value clicked: " + dt.Rows[e.RecordIndex][e.ColumnIndex + 2].ToString();
// e.ColumnIndex + 2 because ColumnIndex is the 0-based index of the columns displayed in the chart as data series. The data source has 2 more extra data columns.
}
/// <summary>
/// This method returns a sample DataTable with test data
/// The tables has the following structure:
/// - Labels (string)
/// - Date (DateTime)
/// - Seller1 (number)
/// - Seller2 (number)
/// - Seller3 (number)
/// </summary>
public static DataTable GetTestData()
{
DataTable dt = new DataTable();
dt.Columns.Add("Labels", typeof(string));
dt.Columns.Add("Date", typeof(DateTime));
dt.Columns.Add("Seller1", typeof(int));
dt.Columns.Add("Seller2", typeof(int));
dt.Columns.Add("Seller3", typeof(int));
DataRow row = dt.NewRow();
row["Date"] = new DateTime(2006, 1, 1);
row["Labels"] = "January";
row["Seller1"] = 100;
row["Seller2"] = 100;
row["Seller3"] = 200;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 2, 1);
row["Labels"] = "February";
row["Seller1"] = 200;
row["Seller2"] = 110;
row["Seller3"] = 170;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 3, 1);
row["Labels"] = "March";
row["Seller1"] = 300;
row["Seller2"] = 140;
row["Seller3"] = 290;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 4, 1);
row["Labels"] = "April";
row["Seller1"] = 100;
row["Seller2"] = 60;
row["Seller3"] = 100;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 5, 1);
row["Labels"] = "May";
row["Seller1"] = 300;
row["Seller2"] = 160;
row["Seller3"] = 120;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 6, 1);
row["Labels"] = "June";
row["Seller1"] = 200;
row["Seller2"] = 120;
row["Seller3"] = 190;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 7, 1);
row["Labels"] = "June";
row["Seller1"] = 200;
row["Seller2"] = 160;
row["Seller3"] = 220;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 8, 1);
row["Labels"] = "August";
row["Seller1"] = 220;
row["Seller2"] = 80;
row["Seller3"] = 120;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 9, 1);
row["Labels"] = "September";
row["Seller1"] = 270;
row["Seller2"] = 200;
row["Seller3"] = 100;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 10, 1);
row["Labels"] = "October";
row["Seller1"] = 300;
row["Seller2"] = 230;
row["Seller3"] = 190;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 11, 1);
row["Labels"] = "November";
row["Seller1"] = 260;
row["Seller2"] = 100;
row["Seller3"] = 200;
dt.Rows.Add(row);
row = dt.NewRow();
row["Date"] = new DateTime(2006, 12, 1);
row["Labels"] = "December";
row["Seller1"] = 320;
row["Seller2"] = 190;
row["Seller3"] = 270;
dt.Rows.Add(row);
return dt;
}