我想更改图表 X 轴值以显示月份的名称
例如:1 => 一月,2 => 二月,等等。
DataTable dt = new DataTable();
SqlCommand s = new SqlCommand("ReportMonthly", SCon);
s.CommandType = CommandType.StoredProcedure;
s.Parameters.AddWithValue("@Year", Year);
SCon.Open();
SqlDataReader dr = s.ExecuteReader();
dt.Load(dr);
chtWRMonthly.DataSource = dt;
chtWRMonthly.Series["Sold"].XValueMember = "Month";
chtWRMonthly.Series["sRemaining"].XValueMember = "Month";
chtWRMonthly.Series["Bought"].XValueMember = "Month";
chtWRMonthly.Series["bRemaining"].XValueMember = "Month";
chtWRMonthly.Series["Sold"].YValueMembers = "sTAccount";
chtWRMonthly.Series["sRemaining"].YValueMembers = "sRemaining";
chtWRMonthly.Series["Bought"].YValueMembers = "bTAccount";
chtWRMonthly.Series["bRemaining"].YValueMembers = "bRemaining";
SCon.Close();
以及如何修复图表中月份的名称,然后设置它们的值?
例子:
不幸的是MSChart
,不允许任何真正的表达式,所以我不知道如何将整数直接转换为月份。
有各种解决方法,但您更喜欢哪种方法取决于您。
1)修改DataSource
带回DateTimes
或..
2)..带回月份字符串。
后者将阻止您使用 x 值。
3)修改DataTable
为包含DateTimes
;这必须在每次检索后发生。
4) 将Axis.Labels
完全替换为CustomLabels
。
以下是解决方法 #3 的示例:它向表中添加一个新列 ('dateX'),并使用根据DateTime.Now.Date
加上列 'c1' 中的整数计算得出的日期填充它。y 值位于“c2”列中。
当然,您应该使用合适的起始值DateTime
,而不是当前日期!
请注意,您需要告诉数据绑定关于 的类型,XValueMember
也可能是IntervalType
!
最后,您可以格式化新列以显示本地化(德语)月份名称..:
if (!DT.Columns.Contains("dateX")) DT.Columns.Add("dateX", typeof(DateTime));
foreach (DataRow row in DT.Rows)
row.SetField<DateTime>("dateX", DateTime.Now.Date.AddMonths(row.Field<int>("c1")));
Series s = chart1.Series[0];
s.XValueMember = "dateX";
s.XValueType = ChartValueType.DateTime;
s.YValueMembers = "c2";
chart1.DataSource = DT;
chart1.DataBind();
Axis ax = chart1.ChartAreas[0].AxisX;
ax.LabelStyle.Format = "MMMM" ;
ax.IntervalType = DateTimeIntervalType.Months;
ax.Interval = 1;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句