gpt4 book ai didi

c# - 带有 SQLdataSource 的大型分页 GridView、Rollup 和 Grand Totals

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:44 25 4
gpt4 key购买 nike

如果我将我的数据集放入 DataTable 中,那么我可以随心所欲地处理它,但是我有手动处理排序、分页和缓存的复杂性。我现在正试图避免这种情况。如果我改为使用完全免费的 SQLdataSource。

我需要一个总计行,我将其内容显示在 gridview 之外。

  • 我知道我可以通过 Hook IIS 中的 RowBound 事件并汇总我看到的每一行来实现这一点,但这看起来很复杂且乏味。
  • 我知道我可以在我的 SQLdataSource(已缓存)上手动执行 SQLdataSource.Select 以从中提取 DataTable,然后使用 DataTable.Compute 对列求和,但这似乎有点 hack,我不是确定即使使用缓存,两个“选择”的效率究竟有多高。

我的首选方法是使用 Group By Rollup 让 SQLserver 完成繁重的工作,这会为我提供结果集的最后一行,其中包含我想要的总数。那么问题是我的 GridView 中有总计行,我不想在那里,因为我需要将总计放在其他地方(将它们放在可以排序和分页的最后一页没有意义)。我想我可以再次捕获行绑定(bind)事件并使总计行不可见,但这有点 hack,可能会混淆分页。

所以我想知道是否有一种巧妙的方法来做到这一点?

最佳答案

当你指的是大数据集时,我假设超过一百万?

我建议缓存总计的结果。每次查看/分页表格时都无需重新计算。创建/更新/删除表以刷新总计信息时创建可观察事件? (因为我没有看到你提到过滤,这是唯一一次总计发生变化而数据集没有变化的情况)

或者也许有关于定时过期缓存的总计信息。如果数据足够大且不稳定,有时您将不得不考虑拥有准确的最新总计的商业值(value)。这通常没有商业值(value)。与几秒钟前的值足够接近就可以了。

至于 SqlDataSource 控件,我个人很讨厌它。表示层/逻辑层/数据层发生了什么?!...

关于c# - 带有 SQLdataSource 的大型分页 GridView、Rollup 和 Grand Totals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3745228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com