2011-10-30 57 views
0

我在一个表中有超过30,000行。花费很多时间来加载gridview中的所有数据。所以我想一次显示100行。当我点击下一页按钮时,应该显示另外100行。当我点击前一页按钮时,应显示前100行。如果我在文本框中键入第5页,那么我想跳到第5行。在网格视图中逐页显示数据

我也想显示将会有多少页面。我们可以在vb.net [winform] gridview中实现这个概念吗?我正在使用数据库PostgreSQL。

有人可以给我一个提示或一些概念吗?

回答

1

请看PostgreSQL中的OFFSET and LIMIT
您的第5页查询看起来是这样的:

SELECT * 
FROM tbl 
ORDER BY id 
OFFSET 400 
LIMIT 100; 

id是在我的例子主键,因此指数是自动进行。 如果您以此方式访问表格,可能会从使用CLUSTER获益。

总页数:

SELECT ceil(1235::real/100)::int 
FROM tbl; 

如果你想数(四舍五入),只是简化为:

SELECT 1235/100 
FROM tbl; 

与这两个数字为整数,结果将是一个整数类型和小数位数自动截断。但我认为你需要在这里取整。

+0

Brandstetter:感谢您的脚本。我在显示总页数时遇到了一个问题。 ceil()函数没有按照我的意愿返回确切的值。例如,如果ceil(42.04),那么不是返回42,而是返回43.是否有其他方法返回42而不是43? – nightfire001

+0

有'ceil'的兄弟:['floor'](http://www.postgresql.org/docs/9.1/interactive/functions-math.html)。你也可以简单地转换为整数,这将截断小数位。但我为此选择了“ceil”。如果你计算'42.04',你将不得不显示'43'页 - 最后一个是空的,但仍然需要。 –