0

大家好,我无法在我的代码上添加条形图。我需要做的是从饼图中为它所拥有的每一块制作一个条形图。不幸的是,我很难做到这一点。我想要做的主要目标是根据 GroupName 创建一个单独的详细条形图。这是我的 C# 代码:

    void StartReport10()
    {
        Chart c = Chart11;

        string str = ConfigurationManager.ConnectionStrings["SLRC_debug"].ConnectionString;
        SqlConnection con = new SqlConnection(str);
        SqlDataAdapter da = new SqlDataAdapter("sp_SLRC_GetReport_MajorAndMinorCauseCategories", con);
        da.SelectCommand.CommandType = CommandType.StoredProcedure;
        da.SelectCommand.CommandTimeout = 60; //(1 minute)

        da.SelectCommand.Parameters.Add(new SqlParameter("@rtype", SqlDbType.Int)).Value = Timeline10.RangeTypeIndex;
        da.SelectCommand.Parameters.Add(new SqlParameter("@y1", SqlDbType.Int)).Value = Convert.ToInt32(Timeline10.FYFrom);
        da.SelectCommand.Parameters.Add(new SqlParameter("@r1", SqlDbType.Int)).Value = Convert.ToInt32(Timeline10.RangeFrom);
        da.SelectCommand.Parameters.Add(new SqlParameter("@y2", SqlDbType.Int)).Value = Convert.ToInt32(Timeline10.FYTo);
        da.SelectCommand.Parameters.Add(new SqlParameter("@r2", SqlDbType.Int)).Value = Convert.ToInt32(Timeline10.RangeTo);

        int top = Int32.Parse(tbTop1.Text);
        da.SelectCommand.Parameters.Add(new SqlParameter("@top", SqlDbType.Int)).Value = top;
        da.SelectCommand.Parameters.Add(new SqlParameter("@MROProjFilter", SqlDbType.VarChar)).Value = MROProjReport3.GetSelectedMROProjFilter;
        da.SelectCommand.Parameters.Add(new SqlParameter("@TradeIntercoFilter", SqlDbType.VarChar)).Value = TradeInterco3.GetSelectedIntercoTradeFilter;

        if (CustomerFilter2.IsEnabled && CustomerFilter2.IsValid)
        {
            string a = CustomerFilter2.GetStrSelection;
            da.SelectCommand.Parameters.Add(new SqlParameter("@str", SqlDbType.VarChar)).Value = a;
        }
        DataSet ds = new DataSet();
        da.Fill(ds);

        ds.Tables["Table"].TableName = "Table_for_Major";
        ds.Tables["Table1"].TableName = "Table_for_Detailed";

        c.DataSource = ds.Tables["Table_for_Major"];
        c.Series.Clear();
        c.Series.Add("Default");
        c.Series[0].ValueMemberX = "GroupName : %";
        c.Series[0].ValueMembersY = "% of Total LineCount";
        c.Series[0].Type = SeriesChartType.Pie;
        c.Series[0]["PieLabelStyle"] = "Inside";
        c.Series[0]["PieDrawingStyle"] = "SoftEdge";
        c.Series[0].ShowInLegend = false;
        c.DataBind();

        //Chart Title
        c.Palette = ChartColorPalette.Dundas;
        c.Titles.Clear();
        c.Titles.Add("PDSL Major & Minor Cause Categories");
        c.Titles[0].Font = new Font("Arial", 14, FontStyle.Bold);
        c.Titles.Add(Timeline10.FYRangeFrom + " - " + Timeline10.FYRangeTo);
        c.Titles[1].Font = new Font("Arial", 8, FontStyle.Regular);

        c.ChartAreas[0].Area3DStyle.Enable3D = true;
        c.ChartAreas[0].Area3DStyle.XAngle = 5;
4

1 回答 1

0

我找到了创建条形图的必要步骤列表:

基本步骤是:

  1. 初始化图表控件。定义任何非默认属性。
  2. 初始化图表区域。定义任何非默认属性。每个 ChartArea 都有一个 Axis 集合(X、Y 和 X2、Y2),因此请务必在必要时设置这些属性。
  3. 初始化要在图表中显示的系列。没有系列,就没有要显示的数据点,因此请确保至少创建一个。
  4. 或者,创建一个图例。
  5. 将数据点添加到系列。
  6. 将 ChartArea、Series 和 Legend 元素添加到图表中。
  7. 将图表控件添加到页面的元素。

这是一个完整页面的链接,其中包含一个示例(Dundas)。

您可以创建单独的 Chart(-objects) 或尝试将新 ChartArea 添加到现有 Chart 并设置Series["barchart"].ChartArea = "ChartArea2"为允许在同一 Chart-object 中使用不同的 Chart-types。

于 2015-04-21T14:46:18.583 回答