2016-07-14 12 views
0

Ich habe Probleme beim Übergeben einer gesamten Gridview an eine andere Seite mit einer Sitzung. Die Art, wie ich es gerade mache, besteht darin, die Datenquelle in einer Datentabelle zu speichern und die Datentabelle durch eine Sitzung zu leiten.So übergeben Sie das gesamte Gridview in einer Sitzung an eine andere Seite

Hier ist mein Code:

1. Seite:

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 

zweiten Seite (Session greifen und gridview bevöl)

 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 

Was mache ich falsch? Warum funktioniert das nicht?

Ich erhalte eine Fehlermeldung:

Object reference not set to an instance of an object.

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

Ich fühle mich wie ich dies der falsche Weg bin vorbei. Ich benutze einen ViewState, um mir zu erlauben, Teile auf der 1. Seite der Gridview hinzuzufügen.

+1

Ich würde sagen: NICHT Gridview! Sie sollten Daten anstelle von Gridview übergeben. –

+0

@MaciejLos Ich weiß nicht, wie das geht? Ich versuche, alle Daten in der Gridview zu übergeben. Nicht nur eine Zeile. –

Antwort

0

Sie müssen ihre Werte übergeben, nicht das Steuerelement selbst.

Es ist nicht möglich ...

oder neu zeichnet wieder alle Daten in einem neuen Gridview-Steuerelement, ein neues Datum-Set verwenden.

+0

Wie würde ich das tun? –

+0

Sie müssen jeden Wert in "hiddenfields" speichern oder das gleiche wie in der ersten Seite durchführen. Nach dem, was du oben geschrieben hast, denke ich, dass der letzte Tipp besser ist (zeichne ein neues ganzes Gitter neu). –