在分页状态下删除纪录的问题
在使用DataGrid分页的时候,正常情况下,绑定数据库列表纪录时会自动产生分页的效果,然而我发觉在删除纪录的时候总会发生"无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。"的异常,其实解决这个问题很简单,我们要做的就是在DataGrid1_DeleteCommand事件中判断CurrentPageIndex的值,并根据不同的结果来绑定DataGrid。
//检索数据库的函数
public DataSet GetZcbd()
{
try
{
DataSet ds=new DataSet();
string searchString="select id,yy,bj from zc";
da=new OleDbDataAdapter(searchString,conn);
da.Fill(ds,"yy");
return ds;
}
catch
{
return null;
}
}
//绑定DataGrid
private void BindGrid()
{
DataSet ds = new DataSet();
ds = us.GetZcbd();
if (ds!=null)
{
this.DataGrid1.DataSource = ds;
this.DataGrid1.DataBind();
}
else
{
msg.Alert("加载数据错误!",Page);
}
}
//删除数据库纪录函数
public string DeleteZcbd(int bdID)
{
int count = this.IfExiseZysx(bdID);//不必理会次句,默认count=1
if (count <= 0) return "false";
else
{
string sqlStr = "delete from zcwhere id="+bdID;
OleDbCommand cmd = new OleDbCommand(sqlStr,conn);
conn.Open();
try
{
cmd.ExecuteNonQuery();
return "true";
}
catch(Exception e)
{
return e.Message.ToString();
}
finally
{
conn.Close();
}
}
}
// DataGrid1_DeleteCommand事件修改函数
private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int bdID = int.Parse(DataGrid1.DataKeys[(int)e.Item.ItemIndex].ToString());
string isDel = us.DeleteZcbd(bdID);
int CurrentPage = 0;
if (isDel == "true")
{
if(this.DataGrid1.CurrentPageIndex == this.DataGrid1.PageCount -1)
{
if (this.DataGrid1.CurrentPageIndex == 0)
{
this.DataGrid1.CurrentPageIndex = this.DataGrid1.PageCount -1;
}
else
{
if (this.DataGrid1.Items.Count % this.DataGrid1.PageSize == 1)
{
CurrentPage = 2;
}
else
{
CurrentPage = 1;
}
this.DataGrid1.CurrentPageIndex = this.DataGrid1.PageCount - CurrentPage;
}
}
this.BindGrid();
}
else
{
msg.Alert("删除数据错误!",Page);
}
}
注释:msg为一个类似WinForm的messagebox对话框,不必理会。可以使用label.Text代替
在分页状态下删除纪录的问题相关推荐
- DataGrid在分页状态下删除纪录的问题
在使用DataGrid分页的时候,正常情况下,绑定数据库列表纪录时会自动产生分页的效果,然而我发觉在删除纪录的时候总会发生"无效的 CurrentPageIndex 值.它必须大于等于 0 ...
- 计算机广播状态下操作,二,操作题:1
二,操作题:1 (2008-11-19 13:29:23) 标签: 杂谈 二,操作题: 操作 1 题目: 打开WINDOWS 98的资源管理器,按顺序进行如下操作: 1.在 A 盘根目录下的NJDD目 ...
- linux 下删除文件的 操纵
linux 下删除 文件的 方法::: 1- remove remove(删除文件) 相关函数 link,rename,unlink 表头文件 #include<stdio.h> 定 ...
- 浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除
浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除 MyBatis-Plus官方文档连接 什么是MyBatis-Plus 请点击上面官方文档查看 代码演示:代码注释为功能详细解释 数 ...
- c4503文件服务器,理光C3503/C4503/C5503检查状态下各项目说明解释
理光C3503/C4503/C5503检查状态下各项目说明解释 使用复印机.文件服务器或打印机模式打印的作业会临时储存在理光复印机中,然后依次执行.您可以在理光复印机[检查状态]显示屏或[作业列表]显 ...
- mysql 有等待事件,排查性能详情中活动会话正在 SYNCH 等待事件状态下等待的问题...
为什么我的 MySQL 数据库实例在性能详情中显示大量活动会话正在 SYNCH 等待事件状态下等待? 上次更新时间:2020 年 12 月 14 日 我有 RDS MySQL.RDS MariaDB ...
- 如何在Release状态下进行调试
1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态.C/C++标签中的Category选General, ...
- qt Android 按键事件,QT无窗口状态下对键盘事件的监听
Question:最近在搞linux下的一个客户端项目,需要接收键盘事件,但是又不能有界面,这种情况怎么处理呢? int main(int argc, char *argv[]) { QApplica ...
- [4G5G专题-93]:流程 - 4G LTE 终端在RRC 连接状态下的小区切换通用过程
目录 第1章 切换概述 1.1 移动性管理 1.2 什么是小区切换(hand over) 1.3 为什么要切换 1.4 小区切换的决策者 第2章 切换的分类 2.1 按照空口频段分 2.2 按照网络设 ...
最新文章
- 诺贝尔奖得主Paul Krugman认可bch发展路线
- 卡式水分滴定仪预测模型分析
- 开发日记-20190425 关键词 gradle基础学习 7年之约 启动篇
- EOS 核心功能 (2) nodeos
- C++ Primer 5th笔记(7)chapter7 类
- Leaflet中原生方式实现测量面积
- could not insert into NHibernate数据库问题解决
- Keil | 解决Keil双击工程名无法打开.map的问题
- OSChina 周五乱弹 —— 你专业是啥,被叫去搬砖了吗?
- HTML怎么显示折后价格,HTML打折计算价格实现原理与脚本代码
- Linux环境下安装单实例MySQL 5.7
- php mysql 模型_ThinkPHP数据库与模型
- PHP - 主流开发框架 - 介绍
- 在线ps,修改证件照背景色
- 如何建立地球上任何一个区域的地形3d模型,并添加卫星或地貌贴图
- stm32f4有重映射么_STM32 端口复用重映射(USART Remap)
- pycharm破解操作
- 软件测试如何快速上手,了解KYM? 阿里总监是这样说的
- 千寻和省cors精度对比_千寻位置服务与CORS系统的精度探讨
- 机器之心年度盘点:2017年人工智能领域度备受关注的科研成果
热门文章
- 链表倒数第k个节点_面试题 02.02. 返回倒数第 k 个节点
- html 3d立体阴影效果图,CSS3打造带阴影的旋转3D图像
- Android客户端多线程实例分析
- python基础知识整理 第七节:单例设计模式、异常、模块、包、制作模块、文件
- 力扣(LeetCode)刷题,简单题+中等题(第20期)
- JAVA求是否为闰年,for-while循环,输出你好
- 【汇总】ElementUI中高频次使用代码片段
- gitlab如何克隆项目到本地进行开发,如何让webstorm项目右键菜单出现Git子菜单,右下角出现Matser分支
- 在Ubuntu 14.04 64bit上搭建单机本地节点Spark 1.3.0环境
- 从头开始学习Adobe Photoshop CC图像编辑