我有一个转发器,显示各种股票的财务数据和价格.
在这个页面上,我还有一个"导出"按钮,需要在屏幕上获取数据〜并将其转换为用户的CSV.
问题是,在我对"Stock"实体列表进行了数据绑定之后:
List<Stock> stocks = GetStocks()
rptStockList.DataSource = stocks;
rptStockList.DataBind();
Run Code Online (Sandbox Code Playgroud)
回发时不会保留数据.
此外,此页面上的数据通过UpdatePanel和Timer控件(每次重新数据绑定)不断更新.每隔30秒,转发器控件中各种库存的价格会发生变化.
现在,我有一个链接按钮,在代码隐藏中有一个click事件方法,它应该在屏幕上为用户导出〜数据.我需要获取最后数据绑定到转发器的股票列表的当前值.我不能简单地从数据库中获取最新值,因为这些值将在上次刷新之间的时间内更改.
protected void lbtnExportStocks_Click(object sender, EventArgs e)
{
// No longer have the stock data used in the repeater control
ExportStocksToExcel();
}
Run Code Online (Sandbox Code Playgroud)
我知道ASP.NET不会在post-back上保留转发器的数据源,但是我仍然需要重新构建这个Stock实体列表,这样我就可以将它们发送给CSV或者我需要将它保留在某些办法.
我不想做任何在性能方面过于繁重的事情,因为在一周的某些日子里,这个应用程序会有一些繁重的用法.
这种情况的正确解决方案是什么?我应该遍历Repeater的"Items"集合并重建Stock实体吗?