2016-07-14 92 views
0

我在使用會話將整個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 

第2頁(搶會話和填充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 

我在做什麼錯?爲什麼這不起作用?

我得到一個錯誤:

Object reference not set to an instance of an object.

Line 21: dt2.Columns.Add(New DataColumn("PartNumber", GetType(System.String)))

我覺得我路過這個錯誤的方式。我確實使用ViewState來讓我在第一頁的Gridview中不斷添加部件。

+1

我會說:不是gridview!你應該傳遞數據而不是gridview。 –

+0

@MaciejLos我不知道該怎麼做?我試圖通過Gridview中的所有數據。不只是一排。 –

回答

0

您必須傳遞它的值,而不是控件本身。

這是不可能的......

或在新的GridView控件再次重繪所有的數據,使用新的數據集。

+0

我該怎麼做? –

+0

您必須將每個值保存在「hiddenfields」中或執行與您在第一頁樣本中所做的相同的操作。根據你上面寫的,我猜測最後一個技巧會更好(再次重新繪製一個新的整個網格)。 –

相關問題