如何将会话中的整个Gridview传递到另一个页面

时间:2016-07-14 20:26:42

标签: asp.net vb.net session gridview

我无法使用会话将整个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添加部件。

1 个答案:

答案 0 :(得分:0)

您必须传递其值,而不是控件本身。

这是不可能的......

或者使用新数据集重新绘制新gridview控件中的所有数据。