DataGridView单元格进入编辑模式的方法:

双击或者f2:

EditCellOnEnter 属性设为True,对DataGridView进行配置,当用户移动到该单元格后,该单元格可立即切换到编辑模式

 

ESC取消编辑,如果将EditCellEnter属性设置为True,则单元格仍将处于编辑模式,但是所有更改都将被放弃,要提交更改,用户只移动到新的单元格,或者叫焦点(focus切换到其他控件。

 

 

为了防止单元格编辑,用户可以设置

DataGridViewCell、DataGridViewColumn·1DataGridViewRow或DataGridView的ReadOnly属性取决于用户要限定更改的内容

 

要在DataGridView控件中修改数据,可通过CellValueChanged事件来完成

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
namespace DataGridView直接修改数据
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = outvalue(); }
private DataTable outvalue() //用Fill(Datatable) 方法的返回值不能是Dataset了
{
string constr = "server=192.168.100.222;user=sa;pwd=p@ssw1rd;database=pwd1";
SqlConnection mycon = new SqlConnection(constr);
DataTable mytable = new DataTable(); //定义一个datatable 数据表
try
{
mycon.Open();
SqlDataAdapter mydpt = new SqlDataAdapter("select * from book",mycon); mydpt.Fill(mytable); //DataAdapter 有多种重载方式,也可以直接写datatable
dataGridView1.EditMode = DataGridViewEditMode.EditOnF2; //点击编辑单元格 }
catch (Exception ex)
{ MessageBox.Show(ex.Message);
}
finally
{
mycon.Close(); }
return mytable; } private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) //为DataGridView创建一个单元格值改变事件
{
string constr = "server=192.168.100.222;user=sa;pwd=p@ssw1rd;database=pwd1";
SqlConnection mycon = new SqlConnection(constr); try
{
mycon.Open();
//定义一个字符串str1=表格控件.列【事件获取列的索引】.表头的文本+‘=’+单引号+表格控件.当前单元格.值.转换string类型+单引号
//【e.columnIndex】为什么要用这个?因为我们要编辑那个行的时候,需要用到(比如数字监控他在bname上)要获取bname的列名字
string str1=dataGridView1.Columns[e.ColumnIndex].HeaderText+"="+"'"+dataGridView1.CurrentCell.Value.ToString()+"'"; //定义一个字符串str2=表格控件.行【事件获取行的索引】.单元格【0】.值.转换string类型
//where bid=100005 这个1005怎么获取?【e.RowIndex】获取行的索引.因为100005在单元格中第1行,(索引器从0开始的0就是1),在获取这个上面的值.转换成string类型
string str2=dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString(); //关联str1和str2 执行update 的时候就相当于把条件获取string变量上
string sqlupdate = "update book set "+str1+" where bid="+str2; //为什么用sqlcommand,不用dataadapter呢?因为SqlCommand下面有个方法ExecuteNonQuery,它ExecuteNonQuery()不返回任何值,一把应用于 insert update delete语句中
SqlCommand mycom = new SqlCommand(sqlupdate, mycon); mycom.ExecuteNonQuery(); //用到只能更新的方法来交互数据库更新 }
catch (Exception ex)
{ MessageBox.Show(ex.Message);
}
finally
{ mycon.Close();
}
}
}
}

DataGridView 直接修改数据操作的更多相关文章

  1. Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 一 ...

  2. 【转】Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...

  3. JDBC操作数据库之修改数据

    使用JDBC修改数据库中的数据,起操作方法是和添加数据差不多的,只不过在修改数据的时候还要用到UPDATE语句来实现的,例如:把图书信息id为1的图书数量改为100,其sql语句是:update bo ...

  4. bootstrap-table:操作栏点击编辑按钮弹出模态框修改数据

    核心代码: columns: [ { checkbox:true //第一列显示复选框 }, ... { field: 'fail_num', title: '失败数' }, { field: 'op ...

  5. DataTable数据类型的一些操作 增加行、插入行、修改数据、修改列名、修改列顺序、计算、选取或删除行(列)、排序、某列distinct值 等

    Datatable 这个数据类型在C#中涉及到对数据库读取时的用处还是挺大的,最近在处理一个报表开发时,一开始把所有的操作都放在sql 上面来做,就是我需要什么样的数据我就query出什么,但是这样其 ...

  6. vue3 操作修改数据

    vue2.x改变数据: <template>   <div class="v2">     这是数据展示:     <div v-for=" ...

  7. C#利用SqlDataAdapte对DataTable进行批量数据操作

    C#利用SqlDataAdapte对DataTable进行批量数据操作,可以让我们大大简化操作数据的代码量,我们几乎不需要循环和不关心用户到底是新增还是修改,更不用编写新增和修改以及删除的SQL语句, ...

  8. DataGridView添加的数据最后一步无法生效的问题。

    在做项目时,需要使用到大量固定的参数,使用时只需修改一部分定值即可,所以就选用DataGridView控件进行循环添加,数据添加完成,一切正常,但是在修改数据时发现,每一次修改的数据的操作的最后一步总 ...

  9. c#教程之通过数据绑定修改数据

    通过数据绑定修改数据 "实体框架"提供了与数据库的双向通信通道.前面已经讲述了如何使用"实体框架"获 取数据,现在来看看如何修改获取的信息,并将改动发送回数据库 ...

随机推荐

  1. Cookie客户端缓存.Session.Application

    Cookie客户端缓存. 1.引言 随着浏览器的处理能力不断增强,越来越多的网站开始考虑将数据存储在「客户端」,那么久不得不谈本地存储了. 本地存储的好处: 一是避免取回数据前页面一片空白,如果不需要 ...

  2. Android 如何保存资源 Id 数组在 res/values/arrays.xml 里

    <resources> <!-- Tracks Information --> <array name="music_ids"> <ite ...

  3. Vue的组件和路由

    组件 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能. 组件的 ...

  4. 1、认识Redis

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库.Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库, ...

  5. OpenStack 业务链networking-sfc介绍 (2) - 底层原理

    原文链接:https://blog.csdn.net/bc_vnetwork/article/details/65630475 1.  SFC底层实现原理 port chain和ovs driver/ ...

  6. Code Chef January Challenge 2019题解

    传送门 \(div2\)那几道题不来做了太水了-- \(DPAIRS\) 一个显然合法的方案:\(A\)最小的和\(B\)所有连,\(A\)剩下的和\(B\)最大的连 算了咕上瘾了,咕咕咕 const ...

  7. BZOJ 1801--中国象棋(DP)

    1801: [Ahoi2009]chess 中国象棋 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1995  Solved: 1160[Submit] ...

  8. windows文件名太长无法删除的解决办法

    安装nodejs 的模块hexo后,由于香重新安装,在删除的时候却提示文件名太长无法删除,dos命令.回收站各种都无法搞定,后来找到解决办法: 1.进入这些文件的所在目录的上层目录,右键这些文件的所在 ...

  9. HQL的使用和limit的替代

    1.HQL不同于SQL,from必须是项目中table反转后对应的class的名字. 2.如何使用参数生成HQL语句: String hql = "from User where userI ...

  10. phpStudy mysql升级至5.7

    1.先停止mysql服务,卸载原来的mysql (其他菜单-->服务器管理--->MySQL--->卸载服务) 2.下载MySQL你需要的版本 ZIP Archive 版本 3.解压 ...