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. mac下wordpress环境搭建

    mac下本来就有apache和php,只需要配置以下+安装mysql 1.Apache 预装目录在  /etc/apache2: 默认的网站目录在 /Library/WebServer/Documen ...

  2. Gogland配置- 修改Go源代码tab值

    Gogland对Go源代码默认值为8个,我很不习惯,第一次遇到tab数量这么大的,于是我决定修改这个tab值! 1,点击顶部菜单“File”->"Settings". 2,在 ...

  3. Java50道经典习题-程序18 乒乓球赛

    题目:两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛的名单. a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单.分析: ...

  4. lucene3.0_IndexSearcher排序

    系列汇总: lucene3.0_基础使用及注意事项汇总 IndexSearcher排序 本文主要讲解: 1.IndexSearcher中和排序相关的方法及sort类.SortField类(api级别) ...

  5. 解决 sublime text 3 there are no packages available for installation 错误

    重装win7 系统后,使用sublime text 3 出现下面的错误提示: 经过摸索,解决方案如下: 第一种方法: 是因为 ipv6 的问题,导致无法访问 sublime 官网,解决方法: 在 ho ...

  6. php实现图片base64编码解码

    1.图片的base64编码 /*首先要确定图片的类型,需要安装一个php拓展php_fileinfo 如已安装可以在extension_dir目录下找到php_fileinfo.dll(windows ...

  7. 学习前端页面css定位

    css元素框定位 一.相对定位: 相对定位是一个非常容易掌握的概念.如果对一个元素进行相对定位,它将出现在它所在的位置上.然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动.pos ...

  8. HTML03--表单、input、框架、URL

    接上一篇“HTML02随笔”,在这里单独说一下HTML中最重要的标签--表单<form> 1.表单form:用于收集用户输入 <form action="" me ...

  9. SPOJ Lexicographical Substring Search 求字典序第k大子串 后缀自动机

    题目传送门 思路:按字典序,小的字符优先选取.对于一个字符,如果以这个字符开头的子串大于等于k个,那说明这个字符是应该选的,并且选完之后,可能还要继续选.如果以这个字符开头的子串小于k个,说明这个字符 ...

  10. CentOS 7下安装RabbitMQ

    下载erlang:http://www.erlang.org/downloads ,otp_src_20.3.tar.gz 下载RabbitMQ: http://www.rabbitmq.com ,r ...