2016-07-14 9 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 

第二ページ(セッションを取得し、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を使用して、第1ページのGridviewに部品を追加し続けることができます。

+1

私は言っています:グリッドビューではありません!あなたはgridviewの代わりにデータを渡す必要があります。 –

+0

@MaciejLosこれを行う方法がわかりません。私はGridviewのすべてのデータを渡そうとしています。 1行だけではありません。 –

答えて

0

コントロール自体ではなく値を渡す必要があります。

これは、新しいデータセットを使用して、...

か、再度新しいGridViewコントロール内のすべてのデータを再描画ことはできません。

+0

どうすればいいですか? –

+0

"hiddenfields"の各値を保存するか、1ページ目のサンプルと同じように実行する必要があります。あなたが上に書いたことによると、最後のヒントはもっと良いと思います(新しいグリッド全体をもう一度描きます)。 –

関連する問題