使用具有 EnableCaching = true 的 ObjectDataSource 优化分页和排序

2023-12-03

我正在使用使用 Linq-To-SQL 类备份的 ODS(ObjectDataSource) 来填充页面上的 Gridview。

考虑到性能 - 我禁用了 Gridview 的 Viewstate 并在 ODS 中启用了缓存。

除此之外,我还优化了 Linq-to-SQL 类中的 Search 方法,以使用 .skip 和 .take 方法仅获取“一页”记录。


现在的问题是,由于缓存,ODS 无法自行对记录集进行“排序”。正如该线程的详细描述:

当我在自定义分页和排序中启用缓存时,GridView 排序不起作用

人们建议使用自定义排序并实现“比较器”,但我相信这会破坏我的性能优势。

http://forums.asp.net/t/1344883.aspx

我已准备好在排序时进行数据库旅行,但是当缓存打开时如何将其分离?

仅供参考,我已经有一个 AJAX 更新面板,其中有 Gridview (EnableViewstate = false) 和 ODS (EnableCaching=true)。希望我走在正确的道路上...建议值得赞赏。


我必须使用“自定义排序”在应用程序端执行排序(即添加额外的方法以启用对通用对象集合的排序)。这个解决方案是不可接受的,因为它要求我从数据库中提取所有记录,然后对它们进行排序!

首先,我不相信应用程序可以比数据库做更好/更快的排序。其次 - 这破坏了我因优化分页而获得的整体性能优势 - 我使用 .skip() 和 .take() LINQ 方法仅获取“一页”记录。

好吧,最后我不得不发明一个解决方案 我自己的。可能仅限于我的同类 场景但肯定是很多 更容易并且还保留了 两个分页的优化为 以及数据缓存。

我的解决方案:我点击了 Gridview 的“排序”事件。如果我允许 ODS 尝试自行对缓存数据进行排序,则会触发“自定义排序”错误。相反,现在我手动执行排序并取消排序事件。为此,我只需在 ODS 中显式设置“orderBy”参数,并将其设置为 Gridview 的“排序”事件中的新排序表达式。这将刷新网格,最后我会执行以下操作:

odsOrganization.SelectParameters["orderBy"].DefaultValue = GetSortExpr(e.SortExpression);
...
e.Cancel = true;
  • this tells the ODS to cancel sorting (which I already performed before canceling the event - as above). ITs like I'm cheating the ODS and handling the sorting in background. And thanks to ODS that it senses that the 'SelectParameters["orderBy"]' has changed and performs a select once again. I The previous sort automatically gets stored in the 'odsOrganization.SelectParameters["orderBy"].DefaultValue' which I can use in sub-sequent iterations.

我仍在测试这个,但令人惊讶的是,只需更新参数的 DefaultValue ODS 就会返回来获取数据。这会保留缓存,直到用户执行排序(它从缓存中获取数据以进行其他操作)并返回到数据库进行排序。希望它对我有用!


这行得通吗?

http://dotnetarchitect.wordpress.com/2009/04/07/gridview-sorting-trick-when-using-object-datasource-with-custom-objects/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用具有 EnableCaching = true 的 ObjectDataSource 优化分页和排序 的相关文章

  • 咖啡因与番石榴缓存

    根据这些微观基准 https github com ben manes caffeine wiki Benchmarks事实证明Caffeine https static javadoc io com github ben manes ca
  • /sys/device/ 和 dmidecode 报告的不同 CPU 缓存大小

    我正在尝试获取系统中不同缓存级别的大小 我尝试了两种技术 a 使用 sys device 中的信息 这是输出 cat sys devices system cpu cpu0 cache index1 size 32K cat sys dev
  • iPhone UITableView 分页结果

    对从服务器拉取的大量结果进行分页的最佳方法是什么 就服务器而言 我可以抵消和限制结果 因此我一次只能提取 25 个结果 但是允许用户查看更多结果而不需要像应用商店一样不断向下滚动不断增长的列表的最佳方式是什么应用程序 谢谢 豪伊 要在列表底
  • Oracle 中的 SQL 调优 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何文章 链接可以让我找到 SQL 调优 Oracle 的示例 如果能用例子来解释那就太好了 我需
  • 有效积累稀疏 scipy 矩阵的集合

    我有一个 O N NxN 的集合scipy sparse csr matrix 每个稀疏矩阵都有 N 个元素集 我想将所有这些矩阵加在一起以获得一个常规的 NxN numpy 数组 N 约为 1000 矩阵内非零元素的排列使得所得总和肯定不
  • kaminari ajax 分页不更新分页

    我正在使用 kaminari gem 在 Rails3 中实现分页 我一直在关注github上的这段代码https github com amatsuda kaminari example commits ajax https github
  • gcc 没有小字符串优化吗?

    Most std string实现 包括 GCC 使用小字符串优化 例如 有一个answer https stackoverflow com a 21710033 2640636讨论这个 今天 我决定检查我编译的代码中的字符串在什么时候被移
  • 使用 JPA Criteria API 进行分页的总行数

    我正在系统中为实体实现 高级搜索 功能 以便用户可以使用该实体的属性上的多个条件 eq ne gt lt 等 来搜索该实体 我正在使用 JPA 的 Criteria API 动态生成 Criteria 查询 然后使用setFirstResu
  • 如何在vb.net中对datagridview的3列进行排序

    下面我想对 ProductCode ColorCode 和 Size 列进行排序 请指导 对 大小 列中的信息进行排序 Size Number sequence XS 1 S 2 M 3 L 4 XL 5 XXL 6 2L 7 3L 8 4
  • 使用 dc.js 按条形值对条形图中的条形进行排序(排序)

    如何通过维度的计算值而不是维度本身的名称对 dc js 示例中的 x 轴 维度 进行排序 例如 请考虑序数条形图的 dc js 示例 https github com dc js dc js blob master web examples
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换
  • 在不是结构方法的函数上实现缓存的惯用方法是什么?

    我有一个像这样的昂贵的功能 pub fn get expensive value n u64 u64 let ret 0 for 0 n expensive stuff ret 并且它经常被用相同的参数调用 它是纯粹的 这意味着它将返回相同
  • 动态数据 Express.JS 的缓存控制

    如何建立一个缓存控制政策在快递 js关于 JSON 响应 我的 JSON 响应根本没有改变 所以我想积极缓存它 我找到了如何对静态文件进行缓存 但找不到如何对动态数据进行缓存 不优雅的方法是简单地添加一个调用res set 在任何 JSON
  • Java 8 流排序字符串列表[重复]

    这个问题在这里已经有答案了 我正在流上调用排序方法 java 文档说 Sorted 方法返回一个由该流的元素组成的流 并根据自然顺序排序 但是当我运行下面的代码时 List
  • 如何按日期对包含通过合并 get_posts 结果创建的 WP po​​st 对象的数组进行排序?

    我想通过合并 2 个单独的帖子的结果来创建单个帖子数组get posts查询 并按发布日期对数组进行排序 在我下面的代码中 get posts 为 args b and args a已合并为一个数组 但它们是分开的 的 9 个标题 args
  • 一对一映射不适用于二级缓存

    我已经声明了 Hibernate 3 的以下映射 使用 FluentNHibernate public class ActivityMap ClassMap
  • 如何在 JavaScript 中对关联数组进行排序?

    我需要为我的一个项目通过 JS 对关联数组进行排序 我发现这个函数在 Firefox 中运行得很好 但不幸的是它在 IE8 OPERA CHROME 中不起作用 无法找到使其在其他浏览器中运行的方法 或者找到另一个适合该目的的函数 我真的很
  • 错误优化器参数在 Keras 函数中不合法

    我使用以下代码来计算数据生成质量指标的拟合优度研究的概率标签 from sklearn model selection import StratifiedKFold from sklearn model selection import K
  • 如何清除浏览器的缓存?

    当我在 Facebook 上玩应用程序且游戏未加载时 会出现提示 要求清除浏览器缓存 如何清除浏览器的缓存 似乎还没有人提到这一点 所以我想我应该插话一下 当你在 Chrome 中打开页面检查器时 你可以右键单击重新加载页面图标将与菜单一起
  • 最小的有效 PDF 是多少?

    出于简单的好奇心 看到了最小的 GIF http probablyprogramming com 2009 03 15 the tiniest gif ever 最小的有效 PDF 文件是多少 这是一个有趣的问题 按照书本 你可以从以下开始

随机推荐

  • 无边框进度条对话框

    我正在显示一个ProgressBar在Android中 如下图所示 但有一个白色边框围绕进度条 如果我不想显示任何边框 即 进度条对话框中应仅显示进度条圆圈和文本 如何显示如下所示的进度条 如何在下图中显示 正在搜索 的进度对话框 Upda
  • 如何用PHP+IIS实现URL路由?

    我编写了一个内容切换器脚本 它使用动态 URL 来传递指示要发送哪些数据的参数 例如 要查看 关于 页面 您可以键入 http www example com page about 问题是 这对用户不友好 特别是在我的情况下 用户不一定会通
  • ASP Classic 解析来自curl POST -F 的数据

    我有以下指向我的服务的 CURL 请求 curl X POST http go example com H Cache Control no cache H Content Type application x www form urlen
  • C 字符串空零?

    我有一个基本的C编程问题 情况如下 如果我正在创建一个字符数组 并且想要使用 s 转换代码将该数组视为字符串 我是否必须包含一个空零 例子 char name 6 a b c d e f printf s name 控制台输出为 abcde
  • 如何一键实现歌曲的播放、暂停、停止?

    我尝试在 android 中制作一个应用程序 仅用一个按钮即可播放 暂停和停止一首歌曲 谁能告诉我如何提出该申请 final Button bPlay Button findViewById R id bPlay MediaPlayer s
  • Couchbase 5存储桶密码设置

    我正在尝试编写一个示例来学习 couchbase 我正在尝试将它与 Spring Boot 及其 CRUD 存储库一起使用 所以我已经下载了最新的 docker 镜像 但要点是 我找不到存储桶的密码 couchbase 控制台仅允许用户创建
  • 从另一个应用程序复制 Android 数据库?

    我有同一个应用程序的两个版本 当人们从免费版本升级到付费版本时 我希望将免费数据库复制到专业数据库位置 如果数据库文件属于另一个应用程序 有没有办法可以访问它本身 该文件是否属于应用程序 或者通常可以通过文件系统访问 最后 如何在不进行硬编
  • 如何在 ffmpeg 中捕获 stdout 流然后将其通过管道传输到 v4l2loopback

    我正在尝试将 h264 流传输到 ffmpeg 然后传输到我的 v4l2loopback 设备 问题是我对Linux相当陌生 所以无法让它工作 该流可以输出到 stdout 但我不知道如何使用 ffmpeg 再次捕获它 然后再次将其传输到我
  • 在 Oracle SQL Developer 1.5 中打印 Oracle Sys_refcursor

    我正在尝试执行返回 sys refcursor 作为输出的过程 程序是PROCEDURE GET EMPLOYEEs P ID in NUMBER P OUT CURSOR OUT SYS REFCURSOR 我在 SQL Develope
  • 如何强制 ie11 请求新的图标?

    我正在开发一个网站 该网站根据登录的用户详细信息更改其图标 控制器在后端处理此请求 并为该网站发送适当的图标 到目前为止 我通过以下方式避免了大多数浏览器缓存图标 然而 该图标仍然在 ie11 中被缓存 当我在 Netbeans 上打开调试
  • 如何检查我的 python 对象是否是数字? [复制]

    这个问题在这里已经有答案了 在Java中 数字类型都是从Number派生出来的 所以我会使用 x instanceof Number python 的等价物是什么 测试你的变量是否是一个实例numbers Number gt gt gt i
  • MySQL 权重评级

    我想根据票数创建一个权重的评级 因此 1 票 5 票不可能比 4 票 4 票更好 我找到了这个数学形式 bayesian avg num votes avg rating this num votes this rating avg num
  • 在 Python 中创建条形图

    我尝试用 python 创建条形图时遇到一些问题 我的图表代码如下所示 import matplotlib matplotlib use Agg from pylab import import calendar def webshow i
  • 将二维动态数组传递给 C++ 中的函数

    我有这个二维动态数组 我想将它传递给一个函数 我该怎么做 int board board new int boardsize creates a multi dimensional dynamic array for int i 0 i l
  • 有没有办法在 Google 幻灯片中使用 Google Apps 脚本获取/添加动画到对象?

    使用 Google Apps 脚本格式化 Google 幻灯片演示文稿时 是否有任何方法可以访问和 或修改有关对象 文本框 形状 图像等 动画的数据 以便添加 删除或修改动画 目前无法使用 Google Apps 脚本获取 设置动画或过渡
  • 如何获取下个月每一天的名称?

    DateTime dt new DateTime dt DateTime Now AddMonths 1 int x DateTime DaysInMonth dt Year dt Month MessageBox Show x ToStr
  • 调用 glutWireSphere() 时 PyOpenGL 访问冲突读取

    我正在使用构建一个应用程序PyOpenGL and PyQt5 on Python3 5 2 该应用程序的目的是设置一个窗口QGLWidget类并使用绘制球体glutWireSphere功能 该代码在我的上运行良好Ubuntu Linux
  • 单个结构数据成员的奇怪指针地址

    我今天观察到一些奇怪的行为 代码如下 代码 include
  • 如何在 Protractor 测试中在 httpBackendMocks 之间切换

    我正在尝试在 Protractor 测试中模拟对 API 调用的响应 在不同的测试中 以及测试内 应用程序将使用不同的 POST 数据 POST 到 API 始终相同的 URL 并期望不同的响应 具体来说 它是一个搜索引擎 我发送不同的查询
  • 使用具有 EnableCaching = true 的 ObjectDataSource 优化分页和排序

    我正在使用使用 Linq To SQL 类备份的 ODS ObjectDataSource 来填充页面上的 Gridview 考虑到性能 我禁用了 Gridview 的 Viewstate 并在 ODS 中启用了缓存 除此之外 我还优化了