数据库表格中每一列的列名为候选人,想将他设置为x轴。然后每个人的得票为y轴。该怎么办?看那么多例子都没找到直接将列名作为x轴的。asp.net应用。
------解决方案--------------------
private void getDaysTrafficByUsername(string userName,string client,DateTime start,DateTime end)
{
DataTable dt = new DataTable();
dt.Columns.Add("days"); //改成候选人的列名
dt.Columns.Add("daysTrafficSum"); //候选人人气的列 如果没有就count(*)as
daysTrafficSum 这样就能把每个人显示在x上并且把每个人的人气数量显示在Y上了 以前写的没问题 有什么就发帖吧
dt = omaEntity.daysTrafficSum(); //调用业务层的方法
//设置图表的数据源
dayChart.DataSource = dt;
//设置图表Y轴对应项
dayChart.Series[0].XValueMember = "days"; //改成候选人的列名
dayChart.Series[0].YValueMembers = "daysTrafficSum"; //候选人人气的列
dayChart.ChartAreas["ChartArea1"].AxisX.MajorGrid.Interval = 1;
dayChart.ChartAreas["ChartArea1"].AxisX.LabelStyle.Interval = 1;
dayChart.SaveImage("D:/img/"+userName +"_Day_"+client+".jpeg",System.Drawing.Imaging.ImageFormat.Jpeg);//图片保存的目录
dayChart.DataBind();
}
------解决方案--------------------
测试数据:
DataTable dt = new DataTable();
for (int i = 0; i < 10; i++)
{
dt.Columns.Add("name" + i, typeof(string));
}
//测试数据
DataRow dr = dt.NewRow();
dr.ItemArray = new object[] { "王一", "赵二", "张三", "A1", "S2", "T5", "Y6", "X7", "孙九", "钱十" };
dt.Rows.Add(dr);
dr = dt.NewRow();
dr.ItemArray = new object[] { 12, 64, 34, 64, 33, 66, 88, 43, 83, 16 };
dt.Rows.Add(dr);
chart1.ChartAreas[0].AxisX.Interval = 1;
for (int i = 0; i < dt.Columns.Count; i++)
{
chart1.Series[0].Points.InsertXY(i, dt.Rows[0][i], dt.Rows[1][i]);
}
效果图
------------------
若第一行的”候选人“有重复的,需要做”选票“累加处理。