C# 从Gridview更新图表-Gridview更新后的图表更新

C# 从Gridview更新图表-Gridview更新后的图表更新,c#,gridview,charts,sqldatasource,C#,Gridview,Charts,Sqldatasource,我有一个GridView和一个图表。我正在从Gridview绘制延时数据 问题:图表不会在GridView更新的同时更新。它总是后退一步(需要额外单击一次) 机制:这是一个延时图。有一个开始和结束日期,我正在以特定的方式绘制它们。所以我在pageu加载函数中读取网格中的值 foreach (GridViewRow row in GridView1.Rows) { // read the values that I need from the Grid

我有一个GridView和一个图表。我正在从Gridview绘制延时数据

问题:图表不会在GridView更新的同时更新。它总是后退一步(需要额外单击一次)

机制:这是一个延时图。有一个开始和结束日期,我正在以特定的方式绘制它们。所以我在pageu加载函数中读取网格中的值

foreach (GridViewRow row in GridView1.Rows)
        {
         // read the values that I need from the Grid
         // and assign them to chart to create the chart
        }

GridView1.DateBind();
Char1.DataBind();
我尝试了页面刷新方法,但没有成功。我在想,我做错什么了吗?顺便说一句,3D按钮工作正常,但有一件事它做错了:它执行来自SQLDataSource的实际查询,而不是我动态创建的查询


怀疑:我怀疑是SQLDataSource造成了这个问题。我在ASPX页面上放了一个。我在运行中更改了SQL查询,我认为这可能是一个问题?

您正在使用一些UpdatePanel吗

也许你可以试试这样的东西:

DataTable dt = new DataTable();
dt.Columns.Add("Column1");
dt.Columns.Add("Column2");

foreach (GridViewRow row in GridView1.Rows)
{
    dt.Rows.Add(GridView1.HeaderRow.Cells[0].Text, row.Cells[0].Text);
}

cht.DataSource = dt;

cht.Series["serie"].XValueMembers = "Column1";
cht.Series["serie"].YValueMembers = "Column2";

cht.DataBind();

你说的“总是后退一步(需要额外点击一下)”是什么意思?它是否显示上一次搜索的值?如果是这样的话,您可能需要在运行foreach以辅助图表之前对GridView进行数据绑定。正如您所看到的,GridView中有一些值,但这些值没有填充到图表中。我必须再次单击搜索,然后才能填充图表。我在GridView和Chart中都使用了DataBind(),并在其中更新了数据。否。gridvesql数据源和Chard。它确实有母版页。那么,图表的数据是仅基于foreach,还是也链接到SqlDataSource?我同意你的看法。我认为您的sqldatasource有些问题……图表未附加到sqldatasource。我正在使用foreach手动映射数据。您使用的是哪个图表组件?哼,我用一个条形图尝试了。。但时间安排也不会有什么不同。我将编辑我的第一篇文章。