2011-10-30 58 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'頁 - 最後一個是空的,但仍然需要。 –