Ich habe einen Repeater, der Finanzdaten und Preise für verschiedene Aktien anzeigt.Wie kann ich die Daten von einem Repeater nach dem Postback beibehalten?
Auf dieser Seite habe ich auch einen "Export" -Knopf, der die Daten ~ auf dem Bildschirm ~ nehmen und in eine CSV für den Benutzer konvertieren muss.
Das Problem ist, nachdem ich meine Liste der „Auf“ Entitäten Databind:
List<Stock> stocks = GetStocks()
rptStockList.DataSource = stocks;
rptStockList.DataBind();
Die Daten werden nicht auf Postbacks beibehalten.
Außerdem werden die Daten auf dieser Seite ständig über ein UpdatePanel und ein Timer-Steuerelement aktualisiert (jedes Mal neu gebunden). Alle 30 Sekunden ändern sich die angezeigten Preise für die verschiedenen Bestände in der Repeater-Steuerung.
Jetzt habe ich einen Linkbutton, der eine Click-Event-Methode im Code-Behind hat, die die ~ Daten auf dem Bildschirm ~ für den Benutzer exportieren soll. Ich muss die aktuellen Werte für die Liste der Aktien abrufen, die zuletzt an den Repeater gesendet wurden. Ich kann nicht einfach die neuesten Werte aus der Datenbank abrufen, da diese in der Zeit zwischen der letzten Aktualisierung geändert wurden.
protected void lbtnExportStocks_Click(object sender, EventArgs e)
{
// No longer have the stock data used in the repeater control
ExportStocksToExcel();
}
Ich weiß, dass ASP.NET bleibt nicht die Datenquelle für den Repeater auf Post-back, aber ich muss noch in der Lage sein Entitäten entweder neu bauen diese Liste der Lager, so kann ich ihnen die CSV senden oder ich muss es irgendwie beibehalten.
Ich möchte nichts tun, was in Bezug auf die Leistung zu schwer ist, weil an bestimmten Tagen der Woche diese Anwendung stark beansprucht werden kann.
Was ist die richtige Lösung für diese Art von Situation? Soll ich die "Items" -Sammlung des Repeaters durchlaufen und die Stock-Entitäten rekonstruieren?
Ich denke, Sie müssen einige Informationen darüber, was genau ExportStocksToExcel() 'tut, da der Repeater die Daten nicht verlieren sollte, die daran gebunden ist (vorausgesetzt, Sie nicht ViewState auf dem Steuerelement oder der Seite deaktiviert haben) wegen Viewstate . Sie können die Daten jedoch nicht rückwärts vom Repeater aus der Datenquelle lesen, wenn Sie das erwartet haben (oder zumindest auf eine vernünftige Weise). –
@Chris Marisic, also, wenn ich das oben Geschriebene schreibe, wie würden Sie persönlich die Daten vom Repeater zurückbekommen, um eine CSV auszugeben? – Darwin
@Chris Marisic, Im Moment stellt ExportStocksToExcel() den richtigen Header und Inhaltstyp ein und dann würde ich eine Antwort mit den CSV-Daten schreiben. Ich habe jedoch Schwierigkeiten, herauszufinden, wie ich diese Daten wieder herausbekomme. – Darwin