我无法使用会话将整个Gridview传递到另一个页面。我目前正在这样做的方法是将数据源存储在数据表中并通过会话传递数据表。
这是我的代码:
第一页:
Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
Dim tbl As DataTable = CType(gvSessionParts.DataSource, DataTable)
Session("dtCart") = tbl
If Request.QueryString("Customer") = "" Then
Response.Redirect("Orderreview.aspx"
Else
Response.Redirect("Orderreview.aspx?Customer=" & Request.QueryString("Customer") & "")
End If
End Sub
第二页(获取会话并填充gridview)
If Not IsPostBack Then
Dim dt2 As DataTable = CType(Session("dtCart"), DataTable)
dt2.Columns.Add(New DataColumn("PartNumber", GetType(System.String)))
dt2.Columns.Add(New DataColumn("Line", GetType(System.String)))
dt2.Columns.Add(New DataColumn("Description", GetType(System.String)))
dt2.Columns.Add(New DataColumn("Description2", GetType(System.String)))
dt2.Columns.Add(New DataColumn("Qty", GetType(System.String)))
dt2.Columns.Add(New DataColumn("Price", GetType(System.String)))
gvSessionParts.DataSource = dt2
gvSessionParts.DataBind()
End If
我做错了什么?为什么这不起作用?
我收到错误:
对象引用未设置为对象的实例。
第21行:dt2.Columns.Add(新DataColumn(“PartNumber”, 的GetType(System.String)))
我觉得我以错误的方式传递了这个。我使用ViewState来允许我在第1页上继续向Gridview添加部件。
答案 0 :(得分:0)
您必须传递其值,而不是控件本身。
这是不可能的......
或者使用新数据集重新绘制新gridview控件中的所有数据。