DevExpress的ChartControl虽然还不能完全代替Office图表(例如它暂时不支持添加数据表),但它算同类产品中相当优秀的了,下面是对0值和空值的处理。
DataTable zeroDT = new DataTable("zeroDT");
zeroDT.Columns.Add("X", typeof(int));
zeroDT.Columns.Add("Y", typeof(int));
zeroDT.Rows.Add(new object[] { 1, 5 });
zeroDT.Rows.Add(new object[] { 2, 4 });
zeroDT.Rows.Add(new object[] { 3, 0 });
zeroDT.Rows.Add(new object[] { 4, 1 });
zeroDT.Rows.Add(new object[] { 5, 2 });
DataTable nullDT = new DataTable("nullDT");
nullDT.Columns.Add("X", typeof(int));
nullDT.Columns.Add("Y", typeof(int));
nullDT.Rows.Add(new object[] { 1, 5 });
nullDT.Rows.Add(new object[] { 2, 4 });
nullDT.Rows.Add(new object[] { 3, null });
nullDT.Rows.Add(new object[] { 4, 1 });
nullDT.Rows.Add(new object[] { 5, 2 });
chartControl1.DataSource = zeroDT;
chartControl1.Series[0].ValueDataMembers[0] = "Y";
chartControl1.Series[0].ArgumentDataMember = "X";
chartControl2.DataSource = nullDT;
chartControl2.Series[0].ValueDataMembers[0] = "Y";
chartControl2.Series[0].ArgumentDataMember = "X";