Wednesday, 15 August 2012

c# - Using a variable to access a chart -



c# - Using a variable to access a chart -

i have c# winforms application has 4 chart controls used graphically show analysis results.

i have code working each graph, in effort more efficient & re-use code i've defined code block to:

create required series, extracts info database & assigns results appropriate series add series chart customise charts appearance.

all of above done dynamically info not exist @ design time.

the working code looking re-use is:

// add together both series chart. chartname.series.addrange(new series[] { series1, series2 }); // cast chart's diagram xydiagram type, access axes. xydiagram diagram = (xydiagram)chartname.diagram;

i'd alter chartname object variable can pass each of charts in order re-use code. (note not work):-

var vchart = this.controls.find(chartname, true); // add together both series chart. vchart.series.addrange(new series[] { series1, series2 }); // cast chart's diagram xydiagram type, access axes. xydiagram diagram = (xydiagram)vchart.diagram;

any ideas, hints, tips, etc on how-to pass variable chartname appreciated.

full code:

void generate_chart() { // create 2 stacked bar series. series series1 = new series("data", viewtype.bar); series series2 = new series("ben", viewtype.line); seek { using (var cmd = new sqlitecommand(m_dbconnection)) (int = loopmin; < loopmax; i++) { // retrieve actual calculated values database cmd.commandtext = "select " + chart_sourceactualvalue + " " + chart_sourcetable + " value = " + + ""; chart_seriesa_value = convert.toint32(cmd.executescalar()); // retrieve expected values database cmd.commandtext = "select " + chart_benexpvalue + " " + chart_sourcetable + " value = " + + ""; chart_seriesb_value = convert.toint32(cmd.executescalar()); // add together dynamically created values series point chart series1.points.add(new seriespoint(i, chart_seriesa_value)); series2.points.add(new seriespoint(i, chart_seriesb_value)); } } grab (exception) { throw; } // add together both series chart. //this.controls.find(varchart, true) chartname.series.addrange(new series[] { series1, series2 }); // remove gridlines chart improve ui // cast chart's diagram xydiagram type, access axes. xydiagram diagram = (xydiagram)chartname.diagram; // customize appearance of axes' grid lines. diagram.axisx.gridlines.visible = false; } }

it sounds you're asking replace hardcoded chartname variable can phone call routine 4 different times, each time different chart. i've taken code , replaced of global variable of chart command , settings , and made them parameters pass function:

void generate_chart(devexpress.xtracharts.chartcontrol chartctrl, string chart_sourceactualvalue, string chart_sourcetable, string chart_benexpvalue ) { // create 2 stacked bar series. series series1 = new series("data", viewtype.bar); series series2 = new series("ben", viewtype.line); seek { using (var cmd = new sqlitecommand(m_dbconnection)) (int = loopmin; < loopmax; i++) { // retrieve actual calculated values database cmd.commandtext = "select " + sourceactualvalue + " " + chart_sourcetable + " value = " + + ""; chart_seriesa_value = convert.toint32(cmd.executescalar()); // retrieve expected values database cmd.commandtext = "select " + chart_benexpvalue + " " + chart_sourcetable + " value = " + + ""; chart_seriesb_value = convert.toint32(cmd.executescalar()); // add together dynamically created values // series point chart series1.points.add(new seriespoint(i, chart_seriesa_value)); series2.points.add(new seriespoint(i, chart_seriesb_value)); } } grab (exception) { throw; } // add together both series chart. chartctrl.series.addrange(new series[] { series1, series2 }); // remove gridlines chart improve ui // cast chart's diagram xydiagram type, access axes. xydiagram diagram = (xydiagram)chartctrl.diagram; // customize appearance of axes' grid lines. diagram.axisx.gridlines.visible = false; } }

then, end calling method using original values arguments:

void generate_chart(chartname, chart_sourceactualvalue, chart_sourcetable, chart_benexpvalue); // phone call 3 other times passing in different specifics chart. e.g. void generate_chart(someotherchartname, someotherchart_sourceactualvalue, someohterchart_sourcetable, someotherchart_benexpvalue); .....

c# winforms devexpress

No comments:

Post a Comment