【问题标题】:Server-side paging服务器端分页
【发布时间】:2016-05-04 06:31:14
【问题描述】:

我可以大致了解服务器端分页吗?步骤是什么?我正在处理SilverlightDataGrid,要求是使用server-side 分页。我做了谷歌但偶然发现,因为对于像我这样的新手来说,几乎每篇文章都包含太多的高级信息。他们中的大多数人也使用了我不知道的WCF RIA 服务。我只需要知道server side paging 的实际情况如何,如果有人可以指导Silverlight 场景,那就太好了。

思路是将records/page,order by/sorting,page no的编号作为parameter发送到stored procedure,并将PagedCollection的结果绑定到DataGrid源。

【问题讨论】:

  • 服务器端分页意味着您需要根据客户端选择的页面从数据库中获取数据?
  • SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY EmpID) AS Row, * FROM Employee AS tbl ) WHERE Row >= @PAGE_NUMBER AND Row
  • @DarshanPatel 你能解释一下你建议的服务器端分页方法吗?这个 SQL 查询背后的想法是什么?

标签: c# datagrid pagination server-side


【解决方案1】:

服务器端,意味着某些东西可以在服务器上运行,或者它可以在安装了 IIS 的计算机上运行。客户端意味着某些东西在浏览器中有效。如果要谈论架构 XAML,它的 .cs 代码和与 silverlight 部分相关的任何内容都被编译成 .XAP 文件并由 silverlight 插件在浏览器中执行 - 所以它是客户端。所以服务器端分页意味着您需要在服务器上编写一些 C# 代码,这将只返回您请求的页面。例如,您有 160 条记录,并且在单页上您想显示 10 条记录。每次向客户端(或在浏览器中工作的东西)提供 160 条记录时,如果没有服务器端分页,silverlight 会从中过滤 10 条记录。但是使用服务器端分页,您将只返回 10 条记录,而 Silverlight 部分只需要显示页面编号和记录本身。

【讨论】:

  • 为什么不通过 SQL 呢?您可以从 SQL 获取所需的数据
  • 酷。我现在知道什么是服务器端分页。现在想知道,每次用户单击页面时,我是否必须调用该方法(以检索下一行)?就像在开始时加载前 10 行一样,当用户单击 Page 2 时,将再次调用运行 SP 并检索接下来的 10 行?
  • 这取决于您的系统负载有多大。如果您同时有五个用户,这将使用您的系统,我认为您无需担心多次调用。但是,如果您的系统将负载更重,您可以考虑某种缓存。附:如果我的回答给了你正确的理解,请标记为答案
  • @darshan-patel 如果您愿意,您也可以直接从客户端的 C# 调用 db。我只是提出了我使用的方式,我工作的所有地方都有相同的方法。但是,如果您愿意,您可以从客户端直接调用 db。我只是假设这种方法很难通过模拟进行单元测试,而且使用不同的数据库(MS-SQL、Oracle、MongoDB)使其灵活也可能具有挑战性
  • @YuraZaletskyy 我设计了一个Stored Procedure,它将采用startingRowIndexMaximum no of rows to display per page。这就是逻辑。就像我们在 ASP.NET 中使用 GridViewObjectDataSource 一样。所以想知道我是否可以在Silverlight 中做类似的事情。比如我将如何配置DataGridDataPager
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2020-03-13
  • 2015-09-07
  • 2012-07-18
相关资源
最近更新 更多