【问题标题】:How to pass entire Gridview in a Session to another page如何将会话中的整个 Gridview 传递到另一个页面
【发布时间】:2016-11-17 22:20:12
【问题描述】:

我无法使用会话将整个 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

第二页(抓取 Session 并填充 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(New DataColumn("PartNumber", GetType(System.String)))

我觉得我以错误的方式传递了这个。我确实使用 ViewState 来允许我继续向第一页的 Gridview 添加部件。

【问题讨论】:

  • 我会说:不是gridview!您应该传递数据而不是 gridview。
  • @MaciejLos 我不知道该怎么做?我正在尝试传递 Gridview 中的所有数据。不只是一排。

标签: asp.net vb.net session gridview


【解决方案1】:

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

这不可能……

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

【讨论】:

  • 我该怎么做?
  • 您必须将每个值保存在“隐藏字段”中,或者执行与第一页示例相同的操作。根据你上面写的,我猜最后一个提示更好(重新绘制一个新的整个网格)。
猜你喜欢
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多