DataGridView控件选中单元格、直接在控件中修改信息

                                                       
   原文取自个人博客:www.jycoder.com欢迎访问

一,获取DataGridView控件中的当前单元格

若要与DataGridView进行交互,通常要求用编程的方式发现哪个单元格出于活动状态。如果需要更改单元格,可通过DataGridView控件的CurrentCell属性来获取当前单元格的信息;

语法如下:

Public DataGridViewCell CurrentCell{get;set;}

【例】创建一个Windows应用程序,向窗体中添加一个DataGridView控件,一个Button控件和一个Label控件,主要用于显示数据、获取指定单元格信息以及显示单元格信息。单击Button时会通过DataGridView的CurrentCell属性来获取当前单元格的信息。

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;//记得添加名字空间
namespace DataGridView获取单元格
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlConnection conn;//声明一个SqlConnection变量
SqlDataAdapter sda;//声明一个SqlDataAdapter
DataSet ds = null;
private void Form1_Load(object sender, EventArgs e)
{
//实例化变量conn,连接数据库
conn = new SqlConnection("Data Source=JUEYING;Initial Catalog=Student;Integrated Security=True");
//实例化变量sda
sda = new SqlDataAdapter("select * from student",conn);
//实例化ds
ds = new DataSet();
//使用SqlDataAdapter对象的Fill方法填充DataSet
sda.Fill(ds,"student");
//设置DataGridView1的数据源
dataGridView1.DataSource=ds.Tables[0];
}
private void button1_Click(object sender, EventArgs e)
{
//使用CurrentCell.RowIndex和CurrentCell.ColumnIndex获取数据列坐标和行坐标
string msg = String.Format("第{0}行,第{1}列",dataGridView1.CurrentCell.RowIndex,dataGridView1.CurrentCell.ColumnIndex);
label1.Text = "选择的单元格为:"+msg;
}
}
}

程序运行结果

二,直接在DataGridView控件中修改数据

在DataGridView中修改数据,主要用到DataTable的ImportRow方法和DataAdapter对象的update方法。实现的过程是通过DataTable的ImportRow方法将更改后的数据复制到一个DataTable中,然后通过DataAdapter对象的Update方法,将DataTable中的数据更新的数据库。

ImportRow方法用于将DataRow复制到DataTable中,且保留任何属性设置以及初始值和当前值。

语法如下:

[code lang="" start="" highlight=""]Public void ImportRow(DataRow row)[/code]

【例】创建一个Windows应用程序,添加一个DataGridView控件和两个Button,DataGridView用于显示数据,两个Button分别用来加载数据和修改数据

代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace DataGridView修改数据
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlConnection conn;//声明一个SqlConnection变量
SqlDataAdapter adapter;//声明一个SqlDataAdapter
DataSet ds = null;
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
//实例化变量conn,连接数据库
conn = new SqlConnection("Data Source=JUEYING;Initial Catalog=Student;Integrated Security=True");
//实例化变量sda
adapter = new SqlDataAdapter("select * from student", conn);
//实例化ds
ds = new DataSet();
//使用SqlDataAdapter对象的Fill方法填充DataSet
adapter.Fill(ds, "student");
//设置DataGridView1的数据源
dataGridView1.DataSource = ds.Tables[0];
//禁止显示行标题
dataGridView1.RowHeadersVisible = false;
//禁用按钮
button1.Enabled = false;
}
//建立一个DataTable类型的方法
private DataTable dbconn(string strSql)
{
conn.Open();//打开连接
this.adapter = new SqlDataAdapter(strSql,conn);//实例化对象
DataTable dtSelect = new DataTable();//
int rnt = this.adapter.Fill(dtSelect);//
conn.Close();//关闭连接
return dtSelect;//返回DataTable对象
}
private void button2_Click(object sender, EventArgs e)
{
if (dbUpdate())//判断返回值是否为true
{
MessageBox.Show("修改成功!");//
}
}
private Boolean dbUpdate()//
{
string strSql = "select * from student";//声明Sql语句
DataTable dtUpdate = new DataTable();
dtUpdate = this.dbconn(strSql);//实例化DataTable对象
dtUpdate.Rows.Clear();//调用Clear方法
DataTable dtShow = new DataTable();
dtShow = (DataTable)this.dataGridView1.DataSource;
for (int i = 0; i < dtShow.Rows.Count; i++)//循环遍历
{
dtUpdate.ImportRow(dtShow.Rows[i]);//ImportRow方法填充值
}
try
{
this.conn.Open();//打开连接
SqlCommandBuilder cb = new SqlCommandBuilder(this.adapter);//声明SqlCommandBuilder变量
this.adapter.Update(dtUpdate);//调用Update方法更新数据
this.conn.Close();//关闭连接
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());//出现异常弹出异常信息
return false;
}
dtUpdate.AcceptChanges();//向数据库调教更改
return true;
}
}
}

程序运行结果

DataGridView控件选中单元格、直接在控件中修改信息

时间: 2024-10-25 15:53:30

DataGridView控件选中单元格、直接在控件中修改信息的相关文章

c#winform中如何修改ListView控件每个单元格的颜色

ListView在View属性为Details的时候它呈现的方式和DataGirdView差不多,它的每一行都是一个ListViewItem,然而每个ListViewItem都有一个BackColor的属性,但是设置了这个属性却没有任何作用.因为是ListView的每一行的样式都继承的父控件的样式所以无法改变. 解决方案: ListViewItem item; item = new ListViewItem(new string[] { "NAME","" });

133自动滚动到被选中单元格(扩展知识:滚动到头部和底部)

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UITableViewController 4 @property (strong, nonatomic) NSMutableArray *mArrDataSource; 5 6 @end ViewController.m 1 #import "ViewController.h" 2 3 @interface Vi

132设置被选中单元格的背景颜色(扩展知识:设置被选中单元格的背景图片)

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UITableViewController 4 @property (strong, nonatomic) NSArray *arrDataSource; 5 @property (strong, nonatomic) NSArray *arrSelectionStyle; 6 7 @end ViewController.m 1 #i

c#DataGridView数据绑定示例——格式化单元格的内容

c#DataGridView数据绑定示例 格式化单元格的内容 在使用DataGridView显示数据库中的数据时,我们需要对某列的数据显示格式进行格式化. 这里使用实时构建的数据,如下图: 在显示时对第三列的数据进行格式化,如下图: 测试数据构建及数据绑定: private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Id&

通过自定义单元格渲染器在Jtable中显示超链接

转载:http://www.tuicool.com/articles/qE7FNv 在JTable中自定义单元格渲染器是非常简单和容易的.对于单元格渲染器来说,它的主要任务就是为目标单元格返回一个Component对象,以呈现其内容.说到Component,就应该豁然开朗了,因为在Swing中,所有可在屏幕上显示的图形控件都是Component的直接或间接子类,也就是说,理论上你可以在JTable单元格中显示任意图形控件! 当然,实际上有一些控件是不能在单元格中显示的,比如JFrame这样的独立

MFC List Control控件添加单元格编辑和单元格下拉列表项以适用于数据库相关操作

作为现代的软件,往往是连着数据库的,而连着和用户方便地操作之间,还有着界面这道坎.MFC是Windows上比较好开发用户界面的框架,然而其自带的控件中没有对于数据库表格支持较好的控件,而使用网上提到的 DataGrid 等控件在本人的win8.1+VS2013平台上老出现找不到控件或者头文件的问题,搞的烦死人.最后想到 List Control 控件只要稍作修改,加上单元格编辑和单元格下拉列表,其实就能和数据库进行良好的对接,一百度,果然有人已经做了这件事,实在是太让人感动了!       

Dev控件GridView单元格绑定控件

//文本按钮 RepositoryItemButtonEdit btnFields = new RepositoryItemButtonEdit();//创建控件 btnFields.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(btnField_ButtonClick);//事件绑定 gridView1.Columns["Fields"].ColumnEdit = btnFie

ios-根据单元格里的控件tag值,在方法外获得对应的section与row的值

在cell的代理方法里:cellForRowAtIndexPath btn.tag = indexPath.section *100 + indexPath.row; [cell.exitPersonBtn addTarget:self action:@selector(exitPersonBtnClick:) forControlEvents:UIControlEventTouchUpInside]; btn点击后触发的方法里,通过tag值获得cell里对应的控件 GroupMemberDat

DevExpress控件 DataGrid 单元格编辑 回车

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 CYSoft.UI.Common; using CYSoft.Common; using CYSoft.TS.Entit