MsChart从数据库添加多个系列

时间:2015-03-17 11:48:52

标签: c# asp.net mschart

我想在我的图表中添加一个不同的折线图。所以我有一个带按钮的文本框。我输入一个代码并从我的数据库加载该系列。问题是新系列系列会覆盖旧系列。所以我决定将添加的系列保留在gridview中,我循环遍历并填充图表;同样的结果。

这是我的代码

void AddSerie(string stockName)
    {
        try
        {

            Legend legend = new Legend(stockName);
            Chart1.Legends.Add(legend);
            Series series = new Series(stockName);
            Chart1.Series.Add(series);

             string[] _data = new string[3];
            _data[0] = stockName;
            _data[1] = "2010-01-01";
            _data[2] = "2015-03-15";

            DataSet ds = DBSelect(_data, "web_price_series");

            Chart1.DataSource = ds;
            Chart1.Series[stockName].XValueMember = "tdate";
            Chart1.Series[stockName].YValueMembers = "value";
            Chart1.Series[stockName].ChartType = SeriesChartType.Line;
            Chart1.DataBind();

        }
        catch (Exception)
        {
            throw;
        }
    }

这就是我如何称呼方法

foreach (GridViewRow row in GridView1.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                AddSerie(row.Cells[0].Text);
            }
        }

我的图例显示了两个系列,但图表只显示了一行。

enter image description here

我添加了这张图片,以显示使用MarkerStyle的两家公司的图表的第二个输出。

enter image description here

这是我想要实现的一个例子。

enter image description here

这是表的结构

enter image description here

任何帮助?

1 个答案:

答案 0 :(得分:0)

而不是使用数据绑定我使用另一种方法: Chart1.Series [0] .Points.AddXY(XValues,Yalues);

void AddSerie(string stockName)
{
    try
    {

        Legend legend = new Legend(stockName);
        Chart1.Legends.Add(legend);
        Series series = new Series(stockName);
        Chart1.Series.Add(series);

         string[] _data = new string[3];
        _data[0] = stockName;
        _data[1] = "2010-01-01";
        _data[2] = "2015-03-15";

        DataSet ds = DBSelect(_data, "web_price_series");

        Chart1.DataSource = ds;
        Chart1.Series[stockName].XValueMember = "tdate";
        Chart1.Series[stockName].YValueMembers = "value";
        Chart1.Series[stockName].ChartType = SeriesChartType.Line;

        foreach (DataRow row in ds.Tables[0].Rows)
        {
           Chart1.Series[stockName].Points.AddXY(row[0], row[1]);
        }

       // Chart1.DataBind();

    }
    catch (Exception)
    {
        throw;
    }
}