【问题标题】:How to save Dataset in temp memory of page?如何将数据集保存在页面的临时内存中?
【发布时间】:2016-03-28 12:06:50
【问题描述】:

我有一个从 SQL Server 调用过程并返回数据表的函数

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

在我的asp页面中

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

其中填写一次pageload() 这个过程大约需要 8 分钟从数据库中获取数据 我想在按钮按下时进行大量过滤以过滤来自GetProducts的数据 并且没有逻辑在每个过滤器中调用 procure 并联系数据库

那么,一旦我在pageload 中获取数据并在按钮按下过滤中处理它,我该如何保存它

【问题讨论】:

  • 考虑分页您的结果集。服务器客户端会更好。恕我直言,根据您在下面的评论,我不确定任何用户实际上需要/能够使用 “100000 行”

标签: asp.net asp.net-mvc stored-procedures report rdlc


【解决方案1】:

这取决于返回的数据量。 如果不是太多,请将数据放入会话变量中,如下所示: 将数据设置到页面上名为 dataSet1 的变量中。

Session["DataSet1"] = dataSet1;

如果数据量很大,您确实需要考虑在过滤之间“刷新”页面。这样你就不会耗尽你的记忆。

【讨论】:

  • 不,我的数据很大,我说从数据库加载数据大约需要 8 分钟
  • 在这种情况下,我建议在每个过滤器之间“刷新”页面。然后通过使用分页查询来限制加载时间来引入更少的数据。将结果设置为一次只返回 1000 条左右的记录。这将加快一切。如果您需要应该返回的总数,请先获取“计数”。
  • 对不起,我不明白你的意思,我的数据超过 100000 行,需要加载它们
  • 我想用这个方法System.Web.HttpContext.Current.Cache.Insert("secret key", table, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration);但是不能识别httpcontext你知道吗?
  • 看起来您已经在缓存结果了。我解释得不好。谷歌这个“分页数据库查询 asp.net”。这将允许您的应用用户与小数据集进行交互,就好像他们正在与返回的整个数据集进行交互一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多