我有一个带有两个数据网格的页面。一个从数据库中读取值并允许选择。当用户选择一个网格时,它会将数据添加到第二个数据网格。这是我为此使用的代码:
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()