第一种: 当以某种条件来查询的时候 其中的结果是以一个结果为条件的datagrid分页 采用字查询到条件下加入如下代码: [c-sharp] view plaincopyprint? protected void btn_Search_Click(object sender, EventArgs e) { if (this.TextBox1.Text == "") { app_java.Create(); app_java.MsgBox("提示:请输入您要查询的标题的关键字!"); app_java.Dispose(); TextBox1.Focus(); } if (DGRUserList.CurrentPageIndex > 0) { DGRUserList.CurrentPageIndex = 0; } string sql = "select * from tb_carproduct where cp_title like '%" + this.TextBox1.Text.Trim().ToString() + "%' and cp_type='" + Request.QueryString.Get("id").ToString() + "'"; db.BindDataGridDs(sql, DGRUserList); } 第二种: 是在删除datagrid最后一条记录的时候出现在这种异常加入一下代码: 当删除数据库中数据并在数据绑定之前,判断是否需要翻页,以纠正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();