我有一个带有两个数据网格的页面。一个从数据库中读取值并允许选择。当用户选择一个网格时,它会将数据添加到第二个数据网格。这是我为此使用的代码:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim dc1 As New DataColumn("NAME")
    Dim dc2 As New DataColumn("PRICE")
    dt.Columns.Add(dc1)
    dt.Columns.Add(dc2)
    Dim dr1 As DataRow = dt.NewRow()
    GridView2.DataSource = dt
    GridView2.DataBind()
End Sub
和
Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged
        Dim dr1 As DataRow = dt.NewRow()
        dr1(0) = Name.ToString
        dr1(1) = Price.ToString
        dt.Rows.Add(dr1)
        GridView2.DataSource = dt
        GridView2.DataBind()
现在,这工作得很好......但这显然可以在表单服务下工作。在基于 Web 的环境中,每当用户在网格 1 中选择一个值时,它都会重置网格 2 中的值,并且每次用户选择一个值时,我都需要将多行添加到第二个 Datagrid 中。当 GridView1 中发生 selectedindexchanged 事件时,会触发“数据添加”。我想我需要将数据保存到会话/cookie,但我不知道在数据网格的情况下我将如何做到这一点。比如,我应该保存什么以及如何阅读它。两个 Gridview 都在更新面板控件下,因此回发应该是即时的(如果需要)。
明显更新的代码...
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        dt = DirectCast(Session("Purchase"), DataTable)
    Else
        Dim dc1 As New DataColumn("NAME")
        Dim dc2 As New DataColumn("PRICE")
        dt.Columns.Add(dc1)
        dt.Columns.Add(dc2)
        Dim dr1 As DataRow = dt.NewRow()
        GridView2.DataSource = dt
        GridView2.DataBind()
    End If
End Sub
和
            Dim dr1 As DataRow = dt.NewRow()
        Session.Add("Purchase", dt)
        dr1(0) = Name.ToString
        dr1(1) = Price.ToString
        dt.Rows.Add(dr1)
        dt = DirectCast(Session("Purchase"), DataTable)
        GridView2.DataSource = dt
        GridView2.DataBind()