0

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

我想单击一下按钮,使用数据读取器填充它们。

我有这个代码:

dg.datasource=reader
dg.databind()

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

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

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

4

2 回答 2

1

因为 datareader 是只转发数据源。填充网格后,光标到达末尾,数据读取器完成。所以在第二次绑定 (chart.bind) 期间,datareader 不包含任何数据。使用可以向前和向后移动的数据集,否则您必须在第一次数据绑定后重新获得相同的数据读取器。

于 2012-04-10T05:09:41.800 回答
0

在我之前的回答之后,如果您想避免使用数据集或重新获得相同的数据读取器,您可以执行以下技巧。

在后面的代码中,使用 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
于 2012-04-10T16:12:35.450 回答