日期:2014-05-20  浏览次数:20897 次

MSchart图表列名设置为x轴。
数据库表格中每一列的列名为候选人,想将他设置为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]);
            }

效果图

------------------
若第一行的”候选人“有重复的,需要做”选票“累加处理。