DataGridView不显示最下面的新行、判断新增行、删除行操作
作者:.NET开发菜鸟 发布时间:2022-11-26 16:14:36
一、DataGridView不显示下面的新行
通常DataGridView的最下面一行是用户新追加的行(行头显示*)。如果不想让用户新追加行即不想显示该新行,可以将DataGridView对象的AllowUserToAddRows属性设置为False。
示例:
this.dgv_PropDemo.AllowUserToAddRows = false;
但是,可以通过程序给DataGridView追加新行:
this.dgv_Demo.Rows.Add();
注:只有DataGridView是非绑定模式时才可以这样使用。
如果DataGridView的DataSource绑定的是DataView,还可以通过设置DataView.AllowAdd属性为False来达到同样的效果。
二、DataGridView判断新增行
DataGridView的AllowUserToAddRows属性为True时允许用户追加新行,DataGridView的最后一行就是新追加的行。使用DataGridViewRow.IsNewRow属性可以判断哪一行是新追加的行。另外,通过DataGridView.NewRowIndex可以获取新行的行序号。在没有新行的时候,NewRowIndex=-1。
在保存数据到数据库的时候,可以根据IsNewRow来判断是不是新行,如果是新行,才进行保存。
三、删除行
1、无条件的删除行
默认时,DataGridView是允许用户进行行的删除操作,选中要删除的行,按Delete键可以删除,该操作没有任何提示(只是删除界面显示的数据,不会真实删除数据库中的数据)。如果设置DataGridView对象的AllowUserToDeleteRows属性为False,用户将被禁止删除行。
示例:禁止DataGridView删除行
this.dgv_PropDemo.AllowUserToDeleteRows = false;
但是,通过行的Remove或者RemoveAt还是可以删除行的。
示例:
//删除选中的第一行
this.dgv_PropDemo.Rows.Remove(this.dgv_PropDemo.SelectedRows[0]);
如果DataGridView绑定的是DataView的话,通过DataView.AllowDelete也可以控制行的删除。
2、删除行时的条件判断
用户在删除行的时候,将会引发DataGridView.UserDeletingRow事件。在这个事件里,可以判断条件并取消删除操作。(需要将AllowUserToDeleteRows设置为true,并且是使用键盘的delete键时才会触发该事件)。
UserDeletingRow:行被删除时触发。
UserDeletedRow:行被删除以后触发。执行顺序:先执行UserDeletingRow事件后执行UserDeletedRow事件。
示例:
private void dgv_PropDemo_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
//删除前确认
if (MessageBox.Show("确认要删除选中的行吗?", "删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
{
//如果不是Ok,则删除
e.Cancel = true;
}
}
private void dgv_PropDemo_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
{
MessageBox.Show("该行已被删除");
}
3、删除选中的行
示例:
foreach (DataGridViewRow row in this.dgv_PropDemo.SelectedRows)
{
if (!row.IsNewRow)
{
this.dgv_PropDemo.Rows.Remove(row);
}
}
来源:https://www.cnblogs.com/dotnet261010/p/6749857.html
猜你喜欢
- 对于QQ截图,肯定是早就有认识了,只是一直没有去认真观察这个操作的具体实现步骤。所以这里将自己的记忆中的步骤简单的写一下:习惯性用QQ或者T
- 使用idea的file-》settings-》plugins安装maven helper插件失败,安装页面总是提示installed,在in
- 一、JDK中常见的异常情况1、常见异常总结图2、java中异常分类Throwable类有两个直接子类:(1)Exception:出现的问题是
- Spring EL表达式语言,支持在XML和注解中表达式,类是于JSP的EL表达式语言。在Spring开发中经常涉及调用各种资源的情况,包含
- 前提:当我们使用Winform开发的时候,经常会遇到:System.InvalidOperationException:&ldquo
- 一、Jsoup的主要功能Jsoup是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API
- Java 反射机制介绍Java 反射机制。通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还原“类的全部的信息”。这里“类
- 前言Java17将是一个长期支持的LTS版本。Java采用了6个月的发布周期。也就是说,它将每6个月发布一个新版本的Java。每隔3年,LT
- 这篇文章主要介绍了如何使用HttpClient发送java对象到服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- 实现效果:奔溃的线程侠:(单线程)主线程正在处理刷新图片的请求时,无法再接受其他请求,从而陷入阻塞的死循环状态。绘制图片import jav
- 在重写类UsernamePasswordAuthenticationFilter时抛出了这个异常,字面上理解是authenticationM
- springBoot项目启动多个实例今天碰到一个需求是,将一个服务提供者启动两个实例,一个实例对外,一个实例对内,对内价格有折扣,两个实例通
- 一、RESTful 简介REST 是一种软件架构风格。REST:Representational State Transfer,表现层资源状
- 在导入studio工程的时候,进行sync的时候,提示Error:Configuration with name 'default&
- finalize方法是什么finalize方法是Object的protected方法,Object的子类们可以覆盖该方法以实现资源清理工作,
- 工作笔记(在不知道json的key时如何获取当前json的keys)String json="{'name':
- 1、点击【File】->【Project Structure】菜单(或使用Shift+Ctrl+Alt+S快捷键),打开【Projec
- 无论是我们在使用word还是记事本,系统都会为我们提供撤销的功能,这几乎是人人都会使用到的功能,而在我们实际开发中,会不会存在一个很复杂的对
- 让我们来看看这段代码: import java.util.BitSet;import java.util.concurrent.C
- 在项目开发中某些场景必须要用到启动项目后立即执行方式的功能,如我们需要去初始化数据到redis缓存,或者启动后读取相应的字典配置等,这篇文章