protected void Page_Load(object sender, EventArgs e) { // Cpecify ScaleTypes WebChartControl1.Series[0].ArgumentScaleType = ScaleType.Qualitative; WebChartControl1.Series[0].ValueScaleType = ScaleType.DateTime; WebChartControl1.Series[1].ArgumentScaleType = ScaleType.Qualitative; WebChartControl1.Series[1].ValueScaleType = ScaleType.DateTime; (WebChartControl1.Series[1].Label as RangeBarSeriesLabel).Position = RangeBarLabelPosition.Inside; // Bound series to data WebChartControl1.DataSource = GanttData.CreateData(); WebChartControl1.Series[0].ArgumentDataMember = "GanntTask"; WebChartControl1.Series[0].ValueDataMembers.AddRange(new string[] { "GanntStart", "GanntEnd" }); // Create argument descriptions for the summary function. SummaryFunctionArgumentDescription argument1Description = new SummaryFunctionArgumentDescription("GanntStart", ScaleType.DateTime); SummaryFunctionArgumentDescription argument2Description = new SummaryFunctionArgumentDescription("GanntEnd", ScaleType.DateTime); SummaryFunctionArgumentDescription argument3Description = new SummaryFunctionArgumentDescription("GanttPercentageComplete", ScaleType.Numerical); // Register the summary function in a chart. WebChartControl1.RegisterSummaryFunction("CalcPercentageComplete", "CalcPercentageComplete", 2, new SummaryFunctionArgumentDescription[] { argument1Description, argument2Description, argument3Description }, CalcPercentageComplete); WebChartControl1.Series[1].ArgumentDataMember = "GanntTask"; WebChartControl1.Series[1].SummaryFunction = "CalcPercentageComplete([GanntStart], [GanntEnd], [GanttPercentageComplete])"; // Don't forget this !:) WebChartControl1.DataBind(); }