My senario is thus.
- If a user click a context menu item on one of bar chart, I show related information to user.
I have done Adding RadContextMenu on RadChart, but How can I know which data is clicked?
my code is below.
protected
void
RadChart1_Click(
object
sender, ChartClickEventArgs e)
{
string
causeCode = e.Series.Name;
string
date = e.SeriesItem.Label.TextBlock.Text;
int
cellCnt = 0;
DataTable qty = (Session[
"DATASET"
]
as
DataSet).Tables[1];
foreach
(DataRow dr
in
qty.Rows)
{
if
(dr[
"Date"
].ToString() == date)
{
cellCnt = Int32.Parse(dr[
"CellCnt"
].ToString());
break
;
}
}
sql.SetDBInfo(SqlHelpers.LINE.TIP_DB, SqlHelpers.DBMS_TYPE.SQLSERVER);
sql.QueryStr = String.Format(
@"SELECT TOP 20 S.Code, COUNT(S.SubPanelID) * 1.0 / {0} * 100 Value
FROM ReportDB.tft.DEFECTKPI_RAW_RP S
WHERE S.BDate BETWEEN
'2013-04-01'
AND
'2013-04-30'
--AND S.Line =
'T'
AND LEFT(S.ProcessID, 7) IN (SELECT ProcessID FROM ReportDB.std.MODELINFO WHERE ProdType =
'TV'
)
AND S.CauseCode IN (
'FAIL'
)
GROUP BY S.Code
ORDER BY COUNT(S.SubPanelID) DESC", cellCnt.ToString());
qty = sql.GetData();
RadChart topDefChart =
new
RadChart();
topDefChart.ChartTitle.TextBlock.Text = causeCode +
" "
+ date;
topDefChart.DataSource = qty;
topDefChart.PlotArea.XAxis.DataLabelsColumn =
"Code"
;
topDefChart.DataBind();
this
.Page.Controls.Add(topDefChart);
SetChartAppearance2(topDefChart);
}
private
void
SetChartAppearance2(RadChart _chart)
{
// Chart Appearence
_chart.Skin =
"LightBrown"
;
_chart.AutoLayout =
true
;
_chart.AutoTextWrap =
true
;
_chart.Width = 900;
_chart.Height = 400;
// Series
foreach
(ChartSeries series
in
_chart.Series)
{
series.DefaultLabelValue =
"#Y{F3}"
;
series.Appearance.ShowLabels =
true
;
int
x = 0;
foreach
(var item
in
series.Items)
{
item.ActiveRegion.Attributes = String.Format(
"id='code{0}'"
, x.ToString());
ContextMenuElementTarget target =
new
ContextMenuElementTarget();
target =
new
ContextMenuElementTarget();
target.ElementID =
string
.Format(
"code{0}"
, x.ToString());
RadContextMenu1.Targets.Add(target);
x++;
}
}
RadContextMenu1.Items.Clear();
RadMenuItem menu1 =
new
RadMenuItem(
"item1"
);
RadMenuItem menu2 =
new
RadMenuItem(
"item2"
);
RadContextMenu1.Items.Add(menu1);
RadContextMenu1.Items.Add(menu2);
// Legend
_chart.Legend.Appearance.Position.AlignedPosition = Telerik.Charting.Styles.AlignedPositions.Top;
_chart.Legend.Appearance.Overflow = Telerik.Charting.Styles.Overflow.Row;
// Axis
_chart.PlotArea.YAxis.AxisLabel.TextBlock.Text =
"%"
;
_chart.PlotArea.YAxis.AxisLabel.Visible =
true
;
}