Transfer Datatable aus einer aspx-Seite zu einem anderen C#
Ich habe eine Frage, die hoffentlich jemand beantworten kann, was ist der beste Weg der übertragung von Datatable zu einem anderen .aspx-Seite, es kann also gesammelt und gebunden zu Gridview in C#?
- Cookies?
- Sitzungen?
- Cache?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt keine einzelne "beste" - so hängt es von der Struktur der Anwendung und der Größe der Klumpen von Daten, die Sie übertragen möchten. Es wird auch davon abhängen, was Sie tun mit ihm an jedem Ende.
Beim meisten basic Niveau, die Antwort ist in der Sitzungsstatus - cookies sind unangemessen, weil (Verallgemeinerung) der Klumpen von Daten, die Sie verschieben möchten, ist zu groß. Cache ist es, Sie zu vermeiden, dass neu zu laden Dinge, aber (wieder eine Verallgemeinerung) sollten Sie nicht verwenden es für Dinge, die Sie erfordern da zu sein, wenn Sie gehen zurück zu schauen, die Sie Blätter mit session.
Natürlich davon ausgegangen, dass du die datatable an alle. Der andere Weg, dies zu tun ist, einfach die Taste mit dem Wert(en), mit denen Sie die datatable abrufen von Speicher - so laden Sie die Tabelle einmal für die erste Seite, Dinge zu tun, beibehalten, die key value(s) navigieren Sie zur zweiten Seite, laden Sie die Datentabelle aus, Ihre Speicher-und dann tun solche updates erforderlich sind. Dies ist notionally ein besseres Modell (seine ein Kompromiss zwischen dem overhead oder dem serialisieren/Deserialisieren der Tabelle session vs ziehen die Daten aus dem datastore und natürlich zwischen datastore und Anwendung ist eine geeignete Möglichkeit, um die Daten im cache) und wenn Sie diesen Weg gehen können Sie entweder die Sitzung oder, wenn Sie wollen, ein cookie, das wiederum befreit Sie von der Abhängigkeit Sitzung.
Wie gesagt, die einfache, praktische, Antwort ist in der Sitzung - aber Sie müssen sich bewusst sein, der Gemeinkosten und der sonstigen Randbedingungen, die diese Orte auf Sie.
Cookies - definitiv nicht.
Sitzung - möglicherweise, abhängig von der Anzahl der Benutzer/die Belastung der server.
Cache - wahrscheinlich keine gute Idee, es sei denn, das raster ist durch viele Benutzer (dh der Daten gewährleistet werden zwischengespeichert).
Können nicht Sie einige Informationen, auf die andere Seite, die es erlauben würde, die Seite, um die Daten für das gridview selbst - vielleicht etwas so einfaches wie einen querystring-parameter,z.B. productId=10?
Lesen Sie auch über cross page posting in ASP.NET.
Wenn Sie eine Umleitung auf die andere Seite, die
Session
ist ein guter Ort. Aber wenn dieDataTable
ist nicht zu teuer, zu neu würde ich wahrscheinlich senden Sie eine neue Abfrage an die Datenbank.Cross page posting ist eine Sache, die Sie tun können, indem Sie eine Eigenschaft, die hält Ihre DataTable. Eine weitere option ist das füllen der datatable wieder auf die nächste Seite, wenn es nicht zu teuer, es wieder zu tun. Cache und session, denke ich, wird teuer. Cookies ist definitiv keine option, da es aussetzen all die Dinge, die an den client.
Kommt es auf den Inhalt Ihrer datatable.
Möchte ich ausschließen Cookies, weil es zwingt Sie zu übertragen alle Daten zum client und zurück(vermute, dass wenn es ein DataTable-es können sehr viele Datensätze).
Sessions und cache wird aber zu berücksichtigen, dass Sie im Speicher gespeichert, wohl solange, wie der Anwender, bleibt die Sitzung aktiv.
Wenn die Abfrage nicht zu lange dauern, um auszuführen, würde ich überlegen, es wieder zu laufen.
Könnte man serialisieren im ViewState.
Sitzung wird die beste opition.