WinForm小技巧之向下复制行和编辑行

2024-08-31 01:44

本文主要是介绍WinForm小技巧之向下复制行和编辑行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

WinForm小技巧之向下复制行

文章目录

  • WinForm小技巧之向下复制行
  • 场景
  • 代码
  • 编辑
    • 场景
    • 代码


场景

在这里插入图片描述
当我点击向下增加行按钮,会在表格中添加一行一摸一样的

代码

按钮点击事件

/// <summary>/// 向下新增/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void addSpaceBtn_Click(object sender, EventArgs e){// 假设你的DataGridView的数据源是一个DataTableDataTable dt = (DataTable)dataGridView_machine.DataSource;// 获取最后一行的数据DataRow lastRow = dt.Rows[dt.Rows.Count - 1];// 在DataTable中添加一个新行DataRow newRow = dt.NewRow();string condition = " set ";//用于添加字段var para = new List<MySql.Data.MySqlClient.MySqlParameter>();// 将最后一行的数据复制到新行for (int i = 0; i < lastRow.ItemArray.Length; i++){string columnName = dt.Columns[i].ColumnName;if (!columnName.Equals("ID")){newRow[columnName] = lastRow[columnName]; // 使用列名来设置新行的值para.Add(new MySql.Data.MySqlClient.MySqlParameter(columnName, newRow[columnName]));}}//id 自增一string sqlmaxid = String.Format("select max(ID) as maxId from {0}", Table_lab_test_schedule.table_name);var maxid = DataBase.Get_LabratoryManage(sqlmaxid);int ID = int.Parse(maxid.Rows[0]["maxId"].ToString()) + 1;para.Add(new MySql.Data.MySqlClient.MySqlParameter(Table_lab_test_schedule.ID, ID.ToString()));// 将新行添加到DataTabledt.Rows.Add(newRow);//添加数据库string sql = String.Format("insert into {0} ({1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21},{22},{23},{24},{25},{26},{27},{28},{29},{30},{31})values(@{1},@{2},@{3},@{4},@{5},@{6},@{7},@{8},@{9},@{10},@{11},@{12},@{13},@{14},@{15},@{16},@{17},@{18},@{19},@{20},@{21},@{22},@{23},@{24},@{25},@{26},@{27},@{28},@{29},@{30},@{31})", Table_lab_test_schedule.table_name, Table_lab_test_schedule.keshi, Table_lab_test_schedule.Type, Table_lab_test_schedule.jinji, Table_lab_test_schedule.mingcheng, Table_lab_test_schedule.shuxing, Table_lab_test_schedule.User, Table_lab_test_schedule.Xinghao, Table_lab_test_schedule.Test_from, Table_lab_test_schedule.Test_to, Table_lab_test_schedule.No, Table_lab_test_schedule.Quatity, Table_lab_test_schedule.tiaojian, Table_lab_test_schedule.jieshoudate, Table_lab_test_schedule.Tester, Table_lab_test_schedule.Jihua_from, Table_lab_test_schedule.Jihua_to, Table_lab_test_schedule.Yuchuli_Mach, Table_lab_test_schedule.Yuchuli_from, Table_lab_test_schedule.Yuchuli_to, Table_lab_test_schedule.Test_Mach, Table_lab_test_schedule.Check_Mach, Table_lab_test_schedule.Check_from, Table_lab_test_schedule.Check_to, Table_lab_test_schedule.result, Table_lab_test_schedule.yichang, Table_lab_test_schedule.storeplace, Table_lab_test_schedule.storestate, Table_lab_test_schedule.tuiyangamount, Table_lab_test_schedule.tuiyangremark, Table_lab_test_schedule.Pause, Table_lab_test_schedule.ID);if (!DataBase.Deal_LabratoryManage(sql, para.ToArray())){new WarningDialogForm("操作失败!").ShowDialog();return;}// 更新DataGridView以显示新添加的行dataGridView_machine.DataSource = null; // 清除数据源绑定dataGridView_machine.DataSource = dt;   // 重新绑定数据源LoadTable();//重新加载数据}

编辑

场景

在这里插入图片描述

代码

给单元格添加事件

 /// <summary>/// 用户编辑单元格结束/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void dataGridView_machine_CellEndEdit(object sender, DataGridViewCellEventArgs e){// 获取当前编辑的单元格DataGridViewCell cell = dataGridView_machine[e.ColumnIndex, e.RowIndex];// 获取编辑的列名string columnName = dataGridView_machine.Columns[e.ColumnIndex].Name;if (columnName.Equals("check")){return;}// 获取单元格所在的行DataGridViewRow row = dataGridView_machine.Rows[e.RowIndex];//获取流水号string ID = row.Cells[Table_lab_test_schedule.ID].Value.ToString();string sql = $"update {Table_lab_test_schedule.table_name} set {columnName}='{cell.Value}' where {Table_lab_test_schedule.ID}='{ID}'";// 获取行数据//string columnName1 = row.Cells["ColumnName1"].Value.ToString();// string columnName2 = row.Cells["ColumnName2"].Value.ToString();// ... 获取其他列的数据if (!DataBase.Deal_LabratoryManage(sql)){new WarningDialogForm("操作失败").ShowDialog();return;}//LoadTable();}

这篇关于WinForm小技巧之向下复制行和编辑行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122532

相关文章

C#文件复制异常:"未能找到文件"的解决方案与预防措施

《C#文件复制异常:未能找到文件的解决方案与预防措施》在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常,当targetFilePath设置为D:2... 目录一个看似简单的文件操作问题问题重现与错误分析错误代码示例错误信息根本原因分析全面解决方案1. 确保

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

MySQL配置多主复制的实现步骤

《MySQL配置多主复制的实现步骤》多主复制是一种允许多个MySQL服务器同时接受写操作的复制方式,本文就来介绍一下MySQL配置多主复制的实现步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 环境准备2. 配置每台服务器2.1 修改每台服务器的配置文件3. 安装和配置插件4. 启动组复制4.

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.