我在同一页面中有一个图表控件和数据网格。
我只需按一下按钮,就可以使用数据加载器填充它们。
我有这段代码:
dg.datasource=reader
dg.databind()
Chart1.Series("series1").Points.DataBind(
reader,
"product_name",
"SumOfpriceafterall",
"Tooltip=SumOfpriceafterall, Label=quantity{C2}")
问题是只填充了其中一个(代码中的第一个数据绑定),而另一个数据绑定不起作用。
为什么会发生这种情况,我的选择是什么?
答案 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