2016-03-28 7 views
1

Ich habe eine Funktion, die eine Prozedur von SQL Server aufrufen und geben eine Datentabelle alsWie speichere ich das Dataset im temporären Speicher der Seite?

public static DataTable GetProducts(int parmCategory = -1){} 

in meiner Asp-Seite I

ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", ReportsBLL.GetProducts())); 
ReportViewer1.LocalReport.Refresh(); 

haben die pageload() diese procudure in einmal füllen dauert ca. 8 Minuten um Daten aus der Datenbank zu bekommen und ich möchte eine Menge Filterung in der Taste drücken, um Daten filtern, die von GetProducts kommt und es gibt keine Logik, um in jedem Filter zu beschaffen und kontaktieren Sie den DB

Also, wie kann ich die Daten speichern, wenn ich es in den pageload bekommen und mit ihnen umgehen in Taste Preßfiltration

+0

Denken Sie daran, Ihre Ergebnismenge/n zu pagen. Server _und_ client ist besser dran. IMHO, basierend auf Ihrem Kommentar unten, bin ich mir nicht sicher, ob ein Benutzer tatsächlich _ _ "100000 rows" _ benötigen/verwenden kann. – EdSF

Antwort

0

Es hängt davon ab, wie viele Daten zurückkehren. Wenn es nicht zu viel ist, legen Sie die Daten in die Session-Variable mit etwa so: Legen Sie die Daten in eine Variable auf Seite namens DataSet1.

Wenn die Daten massiv sind, sollten Sie wirklich erwägen, die Seite zwischen den Filterungen "zu aktualisieren". So bläst du dein Gedächtnis nicht aus.

+0

Nein meine Daten sind sehr groß, ich sagte, es dauert etwa 8 Minuten ti laden Daten aus DB –

+0

In diesem Fall würde ich vorschlagen, die Seite zwischen jedem Filter "aktualisieren". Bringen Sie dann weniger Daten mit paged-Abfragen ein, um die Ladezeit zu begrenzen. Das setzt die Ergebnisse, um nur 1000 Datensätze zu einer Zeit oder so zurückzugeben. Dies wird alles beschleunigen. Wenn Sie die Summe dessen benötigen, was zurückgegeben werden sollte, erhalten Sie zuerst eine "Zählung". – nythgar

+0

Sorry, aber ich kann nicht verstehen, was meinst du, meine Daten über 100000 Zeilen und es notwendig, sie zu laden –