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


猜你喜欢
- 使用SlidingTabLayout需要准备2个类,分别是 SlidingTabLayout,与SlidingTabStrip,,放进项目中
- 一、查看官网http://www.zhuozhengsoft.com/点击首页下载,进入页面:最新得5.2,我们就下载5.2版本进行测试。二
- 在Android中使用ImageView显示图片的时候发现图片显示不正,方向偏了或者倒过来了。 解决这个问题很自然想到的分两步走: 1、自动
- httpSecurity类似于spring security的xml配置文件命名空间配置中的<http>元素。它允许对特定的ht
- main.xml:<?xml version="1.0" encoding="utf-8"?&
- 本文实例讲述了C#基于DBContext(EF)实现通用增删改查的REST方法,分享给大家供大家参考。具体如下:我们用ADO.NET Ent
- 本文实例为大家分享了Android App获取屏幕旋转角度的具体代码,供大家参考,具体内容如下一、获取屏幕旋转角度的方法是:int rota
- AOP注解无效,切面不执行的解决想做一个api请求日志,想到使用aop,配置过程中遇到了一个坑,aop不起作用,我的aop是这样的:pack
- 本文实例讲述了C#自定义繁体和简体字库实现中文繁体和简体之间转换的方法。分享给大家供大家参考。具体分析如下:这里使用C#自定义繁体和简体字库
- 一、什么是轻量级锁轻量级锁是JDK 6之中加入的新型锁机制,它名字中的“轻量级”是相对于使用moni
- Android-webview和js互相调用Android 和 H5 都是移动开发应用的非常广泛。市面上很多App都是使用Android开发
- 会话会话:用户打开浏览器进行的一系列操作直至关闭浏览器的过程看作是一次会话HTTP协议是无状态的,不能实现跟踪对话。比如进入一个网站,每次操
- 前言本文将重点讲解一下Spring中@PropertySource注解的使用,如何通过PropertySource注解加载指定的配置文件。以
- 原文:http://it.deepinmind.com/java/2015/03/17/20-examples-of-date-and-ti
- Java程序有的时候在主线程中会创建多个线程去执行任务,然后在主线程执行完毕之前,把所有线程的任务进行汇总,以前可以用线程的join方法,但
- Bat.aspx: 程序代码 <%@ Page Language="C#" AutoEventWireu
- 方法参数public String listFireEvent(@Valid FireSearch fireSearch, Ht
- 本文实例讲述的是AlertDialog,这种对话框会经常遇到。AlertDialog跟WIN32开发中的Dialog不一样,AlertDia
- 背景在接口请求过程中,传递json对象,springboot转换为实体VO对象后,所有属性都为null。post请求:后台接收请求:当时就懵
- 一、HashMap概述HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键