2012-04-09 8 views
0

チャートコントロールとデータグリッドは同じページにあります。同じデータエリアを使用してチャートコントロールとデータグリッドを設定する

ボタンを1回クリックするだけで、両方をデータレアダーを使用して挿入することができます。

私はこのコードを持っている:

dg.datasource=reader 
dg.databind() 

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

問題は片方のみが取り込まれます(コード内の最初のデータバインド)および他のデータバインドが機能していないということです。

なぜこれが起こり、自分のオプションは何ですか?

+0

1つのデータバインド –

答えて

1

datareaderは転送専用のデータソースです。グリッドが設定されると、カーソルが最後に到達し、データエリアが終了します。 したがって、2番目のバインド(chart.bind)中に、データエリアにデータが含まれていません。 代わりに、前進と後退が可能なデータセットを使用してください。そうしないと、最初のデータバインド後に同じデータエリアを再取得する必要があります。

0

私のprevious answerに加えて、データセットの使用を避けたいのであれば、同じデータエリアを再取得することができます。

コードでは、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 
関連する問題