【问题标题】:How to use start and limit for paging如何使用 start 和 limit 进行分页
【发布时间】:2012-12-31 20:29:02
【问题描述】:

我正在尝试将分页与网格一起使用。以下方法将表格中的所有内容都提供给网格。我如何考虑开始和限制,其中开始是页码,限制是每页的记录。基本上 extjs 工具栏会寻找我的方法来按需返回开始和限制。我尝试了很多解决方案,但似乎无法正常工作。这就是为什么我以简单的方式把它放在这里的原因。

这是我的 c# 结束

public string myRecord(int start, int limit)
{
    List<gridPaging> result = new List<gridPaging>();
    using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices2"].ConnectionString))
    {
        SqlCommand cmd = con.CreateCommand();

        cmd.CommandText = "SELECT * FROM myTable ORDER BY Q1";
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            gridPaging gp = new gridPaging();

            gp.Column1 = reader["Column1"].ToString().Trim();
            gp.Column2 = reader["Column2"].ToString().Trim();
            gp.Column3 = reader["Column3"].ToString().Trim();
            gp.Column4 = reader["Column4"].ToString().Trim();
            result.Add(gp);
        }

        return JsonConvert.SerializeObject(result);
    }
}

【问题讨论】:

  • 你的方法签名是什么样的?即 - { 上方的位
  • Alex...我更新了我的问题

标签: c# sql-server-2008 paging extjs4.1


【解决方案1】:

如果这与您当前的实现类似,您可以修改您的 SQL 以利用 ROW_NUMBER:T-SQL:Paging with ROW_NUMBER()

或者,如果您有某种 LINQ 实现,则可以使用 .Skip().Take() 方法进行分页。

【讨论】:

  • 谢谢克里斯...我在这里尝试你的答案。我对 tsql 完全陌生,所以这对我来说是一段颠簸
【解决方案2】:

在 T-SQL 中,有两个内置函数可以帮助您;第一个是 Row_Number 函数,它为结果集的每一行分配一个唯一的递增序号,按特殊 ORDER BY 子句排序,第二个是 TOP 关键字,它将最大行数限制为被退回。

基本上,您的查询应该如下所示:

SELECT TOP @limit * FROM myTable WHERE (ROW_NUMBER() OVER (ORDER BY Q1)) > @limit * @start ORDER BY Q1

然后,您可以使用 Command.CreateParameter 从 C# 代码中插入参数 @start 和 @limit 的值。例如,对于每页 15 个结果的第三页结果(使用零索引的 start 值 2),计算结果为语句

SELECT TOP 15 * FROM myTable WHERE (ROW_NUMBER() OVER (ORDER BY Q1)) > 30 ORDER BY Q1

...它提供了从 31 到 45 的整体查询的行,前两页的查询分别产生了 1-15 和 16-30 行。

【讨论】:

  • 谢谢Keith...但正如Kirk 提到的...这是@@ROW_NUMBER 查询字符串的一部分
  • 编辑;它不是一个变量,而是一个函数。
猜你喜欢
  • 1970-01-01
  • 2013-06-24
  • 2013-12-20
  • 2019-08-11
  • 2012-07-28
  • 2015-11-10
  • 2023-01-19
  • 2012-11-13
  • 2017-10-29
相关资源
最近更新 更多