使用相同的datareader填充图表控件和数据网格

时间:2012-04-09 18:16:53

标签: asp.net vb.net datagrid datareader

我在同一页面中有一个图表控件和数据网格。

我只需按一下按钮,就可以使用数据加载器填充它们。

我有这段代码:

dg.datasource=reader
dg.databind()

Chart1.Series("series1").Points.DataBind(
    reader, 
    "product_name", 
    "SumOfpriceafterall", 
    "Tooltip=SumOfpriceafterall, Label=quantity{C2}")

问题是只填充了其中一个(代码中的第一个数据绑定),而另一个数据绑定不起作用。

为什么会发生这种情况,我的选择是什么?

2 个答案:

答案 0 :(得分:1)

因为datareader只是前向数据源。填充网格后,光标到达结尾并完成datareader。 因此在第二次绑定(chart.bind)期间,datareader不包含任何数据。 使用数据集代替可以前进和后退,否则你必须在第一个数据绑定后重新获得相同的datareader。

答案 1 :(得分:0)

除了我的previous answer之外,如果您想避免使用数据集或重新获得相同的datareader,您可以执行以下操作。

在后面的代码中,使用gridview.rowdatabound事件,对于添加到gridview的每个数据行,使用相同的数据在图表上绘制X,Y。类似的东西:

Protected Sub myGV_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles myGV.RowDataBound

    Dim Field1 as string, Field2 as string

    If e.Row.RowType = DataControlRowType.DataRow Then
        Field1 = DataBinder.Eval(e.Row.DataItem, "Field1")  ' X Value
        Field2 = DataBinder.Eval(e.Row.DataItem, "Field2")  ' Y value
        ' Plot on the chart the above X,Y
    End If
End Sub