2011-10-15 16 views
0

我想用asp.net和c#進行調查。圖表調查數據圖表

很明顯,我可以做到。但是,我想用餅圖和直方圖來展示結果。

問題只有兩個答案「是」和「否」。 在餅圖中,「是」的整個百分比和「否」的百分比如%55「是」,%45「否」。

在直方圖中,我想顯示每個問題分爲兩部分(「是」和「否」)。

爲了做到這些(餅圖和直方圖),我應該使用像Telerik這樣的組件嗎? 或者我可以在.NET中使用繪圖庫來做到這一點嗎?

回答

2

您可以使用Asp.net Chart控件來表示餅圖中的數據......它也取決於數據綁定。

如果你正在使用的數據表,以獲得從數據庫然後asp.net圖表控件更好的數據...

你會請看看這個鏈接獲取更多信息....

http://www.4guysfromrolla.com/articles/120804-1.aspx

EDIT

這是從數據庫功能獲取數據..

 public DataTable GetVisits(System.DateTime startdate , System.DateTime enddate) 
    { 

     const string sql = @"SELECT CONCAT(UPPER(SUBSTRING(visit_Status, 1, 1)), SUBSTRING(visit_Status FROM 2)) as Status, COUNT('x') AS Visits 
           FROM visits 
           WHERE visit_Date BETWEEN @startdate AND @enddate 
           GROUP BY visit_Status"; 

     return sqlexecution(startdate, enddate, sql); 
    } 

我用堆列表表示這個數據。

如果你想在餅圖來表示,您可以在代碼中改變

 public void DrawMembersvisits(Chart targetchartcontrol, DateTime startdate, DateTime enddate) 
    { 
     chart1 = targetchartcontrol; 

     Series series = null; 
     Title title; 
     string area = null; 

     chart1.ChartAreas.Clear(); 
     chart1.Series.Clear(); 
     chart1.Titles.Clear(); 

     DataTable membervisits = null; 

     area = "Visits"; 
     chart1.ChartAreas.Add(area); 
     series = chart1.Series.Add(area); 
     series.ChartArea = area; 

     title = chart1.Titles.Add("Member Visits"); 


     title.Alignment = ContentAlignment.MiddleCenter; 
     title.Font = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Regular); 



     title.DockedToChartArea = area; 
     chart1.Titles.Add("").DockedToChartArea = area; 

     foreach (Title titles in chart1.Titles) 
     { 
      titles.IsDockedInsideChartArea = false; 

     } 

     foreach (ChartArea areas in chart1.ChartAreas) 
     { 
      areas.Area3DStyle.Enable3D = true; 
      areas.AxisX.LabelStyle.IsEndLabelVisible = false;                            areas.AxisX.LabelStyle.Angle = -90; 
      areas.AxisX.LabelStyle.IsEndLabelVisible = true; 
      areas.AxisX.LabelStyle.Enabled = true; 


     } 

     foreach (Legend legends in chart1.Legends) 
     { 
      legends.Enabled = false; 

     } 

     foreach (Series serie in chart1.Series) 
     { 
      serie.ChartType = SeriesChartType.StackedColumn; 

      // change here to get the pie charts 
       // charttypes.ChartType = SeriesChartType.Pie; 
       // charttypes["LabelStyle"] = "Outside"; 
       // charttypes["DoughnutRadius"] = "30"; 
      // charttypes["PieDrawingStyle"] = "SoftEdge"; 
      // charttypes.BackGradientStyle = GradientStyle.DiagonalLeft; 


       serie["LabelStyle"] = "Outside"; 
       serie["ColumnDrawingStyle"] = "SoftEdge"; 
      serie["LabelStyle"] = "Top"; 
      serie.IsValueShownAsLabel = true; 
      serie.BackGradientStyle = GradientStyle.DiagonalLeft; 

     } 


     membervisits = visistsdataf.GetVisits(startdate, enddate); 

     chart1.Series[0].Points.DataBindXY(membervisits.Rows, "Status", membervisits.Rows, "Visits"); 

     foreach (Series chartSeries in chart1.Series) 
     { 
      foreach (DataPoint point in chartSeries.Points) 
      { 
       switch (point.AxisLabel) 
       { 
        case "Accepted": point.Color = Color.Green; break; 
        case "Refused": point.Color = Color.Red; break; 

       } 

       point.Label = string.Format("{0:0} - {1}", point.YValues[0], point.AxisLabel); 
      } 
     } 


    } 
+0

謝謝errorstacks,我認爲它可以幫助我.. – ToUpper

+0

,如果你認爲這是真正的幫助你,然後將其標記爲一個答案... –

+0

我是newby所以謝謝你的建議.. – ToUpper