场景

在Winform中使用DataGridView实现添加一行、删除一行、上移一行、下移一行。

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

添加一行

private void TaskViewEditHelper_OnAddStep(object sender, EventArgs e){DataGridViewRow dr = new DataGridViewRow();dr.CreateCells(this.dataGridView_Task_ViewEdit);dr.Cells[0].Value = "公众号" + this.dataGridView_Task_ViewEdit.Rows.Count;dr.Cells[1].Value = "霸道的程序猿";dr.Cells[2].Value = "大量编程教程与资源";//this.dataGridView_Task_ViewEdit.Rows.Insert(0, dr);    //添加的行作为第一行this.dataGridView_Task_ViewEdit.Rows.Add(dr);//添加的行作为最后一行}

效果

删除一行

 private void TaskViewEditHelper_OnRemoveStep(object sender, EventArgs e){if (this.dataGridView_Task_ViewEdit.SelectedRows == null || this.dataGridView_Task_ViewEdit.SelectedRows.Count == 0){XtraMessageBox.Show("请先选择删除步,单击第一列以选中行");}else{if (XtraMessageBox.Show("确定要删除选中步吗?") == System.Windows.Forms.DialogResult.OK){foreach (DataGridViewRow dr in this.dataGridView_Task_ViewEdit.SelectedRows){if (dr.IsNewRow == false){//如果不是已提交的行,默认情况下在添加一行数据成功后,DataGridView为新建一行作为新数据的插入位置this.dataGridView_Task_ViewEdit.Rows.Remove(dr);}}}}}

效果

上移一行

private void TaskViewEditHelper_OnUpStep(object sender, EventArgs e){if (this.dataGridView_Task_ViewEdit.SelectedRows == null || this.dataGridView_Task_ViewEdit.SelectedRows.Count == 0){XtraMessageBox.Show("请先选择一行,单击第一列以选中行");}else{if (this.dataGridView_Task_ViewEdit.SelectedRows[0].Index <= 0){XtraMessageBox.Show("此行已在顶端,不能再上移!");}else{//注意:这里是非绑定数据情况的上移行// 选择的行号  int selectedRowIndex = GetSelectedRowIndex(this.dataGridView_Task_ViewEdit);if (selectedRowIndex >= 1){// 拷贝选中的行  DataGridViewRow newRow = dataGridView_Task_ViewEdit.Rows[selectedRowIndex];// 删除选中的行  dataGridView_Task_ViewEdit.Rows.Remove(dataGridView_Task_ViewEdit.Rows[selectedRowIndex]);// 将拷贝的行,插入到选中的上一行位置  dataGridView_Task_ViewEdit.Rows.Insert(selectedRowIndex - 1, newRow);dataGridView_Task_ViewEdit.ClearSelection();// 选中最初选中的行 dataGridView_Task_ViewEdit.Rows[selectedRowIndex - 1].Selected = true;}}}}

注:

这里是没绑定数据源情况下的上移一行,添加的一行时通过是上面新增的方法实现的。

此时dataGridView的dataSource是为空的。

其中用到获取选中行的方法:

private int GetSelectedRowIndex(DataGridView dgv){if (dgv.Rows.Count == 0){return 0;}foreach (DataGridViewRow row in dgv.Rows){if (row.Selected){return row.Index;}}return 0;}

效果

下移一行

        private void TaskViewEditHelper_OnDownStep(object sender, EventArgs e){if (this.dataGridView_Task_ViewEdit.SelectedRows == null || this.dataGridView_Task_ViewEdit.SelectedRows.Count == 0){XtraMessageBox.Show("请先选择一行,单击第一列以选中行");}else{if (this.dataGridView_Task_ViewEdit.SelectedRows[0].Index >= this.dataGridView_Task_ViewEdit.Rows.Count - 1){XtraMessageBox.Show("此行已在底端,不能再下移!");}else{int selectedRowIndex = GetSelectedRowIndex(this.dataGridView_Task_ViewEdit);if (selectedRowIndex < dataGridView_Task_ViewEdit.Rows.Count - 1){// 拷贝选中的行  DataGridViewRow newRow = dataGridView_Task_ViewEdit.Rows[selectedRowIndex];// 删除选中的行  dataGridView_Task_ViewEdit.Rows.Remove(dataGridView_Task_ViewEdit.Rows[selectedRowIndex]);// 将拷贝的行,插入到选中的下一行位置  dataGridView_Task_ViewEdit.Rows.Insert(selectedRowIndex + 1, newRow);dataGridView_Task_ViewEdit.ClearSelection();// 选中最初选中的行  dataGridView_Task_ViewEdit.Rows[selectedRowIndex + 1].Selected = true;}}}}

效果

DataGridView怎样实现添加、删除、上移、下移一行相关推荐

  1. js操作table中tr的顺序,实现上移下移一行的效果

    总体思路是在table外部加个div,修改div的innerHtml实现改变tr顺序的效果 具体思路是 获取当前要移动tr行的rowIndex,在table中删除掉,然后循环table的rows,到了 ...

  2. 将dataGridView中的添加/删除等修改保存至数据库

    C#示例代码如下: using System.Data; using System.Data.SqlClient; public partial class Form1 : Form     { Da ...

  3. 基于jquery框架实现以行的添加、上移、下移和删除操作

    基于jquery框架实现以行的添加.上移.下移和删除操作 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  4. DataGridView上移 下移行

    /// <summary>/// 下移/// </summary>/// <param name="dataGridView"></par ...

  5. IDEA 快捷键 代码上移一行 下移一行 快捷键 try catch 块 快捷键

    文章目录 前言 快捷键 常用 [调试部分.编译] [重构] [查找] 前言 写代码的时候看到大神的一些帅气的操作,于是拷贝整理了一下,主要是为了方便自己查阅. 快捷键 常用 按键 功能 Ctrl+Al ...

  6. 在可编辑表格EditorGrid中,我选择一行已输入的数据,点击删除按钮,该行数据将被删除,然后当我点击表单提交按钮时,已经被删除的那一行数据仍然被插入数据库中...

    为什么80%的码农都做不了架构师?>>>    问题描述:在可编辑表格中,我选择一行已输入的数据,点击删除按钮,该行数据将被删除,然后当我点击表单提交按钮时,已经被删除的那一行数据仍 ...

  7. elementUI 表格多行上移下移、单行移动、拖拽移动(行,列)

    多行上移下移 主要代码 实现效果,勾选多行整体上移或者下移 //移动后更新排序moveUpdateSort(tableList){for(let i in tableList){//tableList ...

  8. html ul 位置上移,JS移动li行数据,点击上移下移(是位置的互换,不是top的偏移量改变)...

    JS移动li行数据,点击上移下移 * { padding:0; margin:0; } .content {width:500px;margin:20px auto;} #pCon {width:50 ...

  9. xtragrid 上移下移

    xtragrid 实现焦点行的上移下移主要还是对gridviw绑定的数据表的操作,如果只是简单的显示而不做保存操作那么比较简单,直接把绑定的数据表中的前后两行更换下数据,具体如下: 代码  priva ...

最新文章

  1. java.lang.ArrayIndexOutOfBoundsException异常分析及解决
  2. URI和URL及URN的区别
  3. 模拟微信自动化发送(微信公众号文章自动点击)
  4. IE6不支持min-heigt的bug解决的办法
  5. Spark 学习(十一) spark使用hive的元数据信息
  6. STM32低功耗模式测试
  7. MFC框架类、文档类、视图类相互访问的方法
  8. java 向量 内积_【vector应用】计算两个向量的内积
  9. Excel学习2:折线图的渐变
  10. 从Linux内核角度看中间人攻击(ARP欺骗)并利用Python scapy实现
  11. 2021抖音电商知识产权保护报告
  12. 设计模式学习笔记(一)
  13. 中国移动北京公司携未来电视、UWA、爱奇艺开启超高清新时代
  14. WDM内核驱动程序模型分析
  15. python写入excel怎么跨列居中_python文件读写(三)-Excel表格三剑客xlwt,xlrd,xlutils...
  16. 如何快速实现数组/字符串的逆序(用reverse函数实现)
  17. LPCSTR,LPCTSTR,LPCWSTR的区别
  18. uniapp 电子印章_初探uni-app框架 踩坑
  19. Jar包安装成系统服务-开机自启动
  20. C++(三十六)之电视机和遥控器友元类

热门文章

  1. Map的putAll方法踩坑实记(对象深拷贝浅拷贝)
  2. 服务器监控工具_系统管理员不可错过的 6 款服务器监控工具
  3. python语言具有使用变量需要先定义后使用的特点_3、Python语法入门之变量
  4. python抢票_50 个加速包都抢不到车票,还不如这个 Python 抢票神器!
  5. html5 像素人物,HTML5 Canvas 像素火焰 | 火苗
  6. linux raw 开机启动,Linux实现redmine自动启动的方法
  7. 根据数据库表gengxin实体类_Python学习第四十八天记录打call:SQLALchemy操作MySQL关系型数据库...
  8. vba 跳出for循环_VBA简单入门08:For循环
  9. 岳西中自机器人_中国科学院
  10. 计算机应用优质课资料,全国信息技术优质课一等奖教案——信息的收集