無效的 CurrentPageIndex 值。它必須大於等於 0 且小於 PageCount。
(轉)前些日子在公司的一個項目中,要用到DataGrid自帶的刪除功能,並且實現分頁,原以為很簡單的,但卻偏偏困擾了我們組的所有人!每當刪除一條記錄後要退回到前一頁時,便出現了“
無效的 CurrentPageIndex 值。它必須大於等於 0 且小於 PageCount。”錯誤。單步調試並跟蹤進去,方才發現,問題出在了DataGrid.DataBind();的時候。我調了一下DataBind()之前的DataGrid數據源狀態,發現DataGrid.CurrentPageIndex還是刪除前的,這是出錯的主要原因!針對這個錯誤,可以有如下的解決方案:
思路:
當刪除數據庫中數據並在數據綁定之前,判斷是否需要翻頁,以糾正CurrentPageIndex的錯誤。
實現:
在DataGrid_Delete方法中,添加如下代碼:
//正常刪除數據庫中的數據
。。。。。。
//判斷
if( DataGrid1.Items.Count == 1 && DataGrid1.CurrentPageIndex > 0 )
{
DataGrid1.CurrentPageIndex--;
}
//重新綁定數據
BindGrid();
情況二(變種):
可能我們沒有使用DataGrid內建的刪除方式,可能通過CheckBox使得每次可以刪除多條記錄。
思路:
其實思路差不多,只不過要獲取一次一共刪除多少記錄,並保存於一個變量中,然後將DataGrid1.Items.Count和其比較,正如上面的“
DataGrid1.Items.Count == 1”,這樣就能判斷是否需要翻頁了。
實現:
//獲取刪除記錄的總數
int count = 0;
foreach( DataGridItem item in DataGrid1.Items )
{
&nb