思路:
当删除数据库中数据并在数据绑定之前,判断是否需要翻页,以纠正 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 )
{
if( item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem )
{
CheckBox ckbox = item.FindControl(“CheckBox1“ ) as CheckBox;
if( ckbox != null && ckbox.Checked )
++ count;
}
}
// 判断
if( count == DataGrid1.Items.Count && DataGrid1.CurrentPageIndex > 0 )
{
-- DataGrid1.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 )
{
if( item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem )
{
CheckBox ckbox = item.FindControl(“CheckBox1“ ) as CheckBox;
if( ckbox != null && ckbox.Checked )
++ count;
}
}
// 判断
if( count == DataGrid1.Items.Count && DataGrid1.CurrentPageIndex > 0 )
{
-- DataGrid1.CurrentPageIndex;
}
//
重新绑定数据
BindGrid();
情况三(变种):
在我们的一个 Page 中,可能是根据某一条件进行筛选,然后再显示在 DataGrid 内。当 DataGrid 允许分页,也会出现类似的问题。即:当某一个条件筛选出的结果大于 1 页,并且我们浏览到第 2 ,或更后面的页,然后我们改变筛选的参数,重新获取结果并填充 DataGrid ,那么该错误提示又将出现!
思路:
思路就是,在改变筛选条件,进行筛选之前,我们应该判断 CurrentPageIndex 是否为第一页,即 CurrentPageIndex 应该等于 0 。如果不是则将其设置为 0 。
实现:
我们用一个 DropDownList 来实现筛选,在 SelectedIndexChanged 事件处理函数中,我们原来是这么写的:
private void lstProject_SelectedIndexChanged(object sender, System.EventArgs e)
{
ShowData( lstProject.SelectedValue );
}
现在应该改为:
private void lstProject_SelectedIndexChanged(object sender, System.EventArgs e)
{
if( viewAllWorkItem.CurrentPageIndex > 0 )
{
viewAllWorkItem.CurrentPageIndex = 0;
}
ShowData( lstProject.SelectedValue );
}
BindGrid();
情况三(变种):
在我们的一个 Page 中,可能是根据某一条件进行筛选,然后再显示在 DataGrid 内。当 DataGrid 允许分页,也会出现类似的问题。即:当某一个条件筛选出的结果大于 1 页,并且我们浏览到第 2 ,或更后面的页,然后我们改变筛选的参数,重新获取结果并填充 DataGrid ,那么该错误提示又将出现!
思路:
思路就是,在改变筛选条件,进行筛选之前,我们应该判断 CurrentPageIndex 是否为第一页,即 CurrentPageIndex 应该等于 0 。如果不是则将其设置为 0 。
实现:
我们用一个 DropDownList 来实现筛选,在 SelectedIndexChanged 事件处理函数中,我们原来是这么写的:
private void lstProject_SelectedIndexChanged(object sender, System.EventArgs e)
{
ShowData( lstProject.SelectedValue );
}
现在应该改为:
private void lstProject_SelectedIndexChanged(object sender, System.EventArgs e)
{
if( viewAllWorkItem.CurrentPageIndex > 0 )
{
viewAllWorkItem.CurrentPageIndex = 0;
}
ShowData( lstProject.SelectedValue );
}