窗体1设计:
主窗体上有一个DATAGRIDVIEW控件和一个BUTTON按钮控件
代码:
namespace WindowsApplication2
{
public partial class Form1 : Form
{
private SqlDataAdapter ad;
private DataSet ds; public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
ad = new SqlDataAdapter("select * from PayType",DB.conn);
ds = new DataSet();
ad.Fill(ds, "PayType");
this.dgvTest.DataSource = ds.Tables["PayType"];
} private void btnUpdate_Click(object sender, EventArgs e)
{
SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(ad);
ad.Update(ds,"PayType");
}
}
}
当点击了修改按钮时,会将修改后的数据保存回数据库中
窗体2设计:
主窗体中有一个DATAGRIDVIEW控件,DATAGRIDVIEW控件中新增加了一列为更新按钮,其他和上面的DATAGRIDVIEW没区别
然后我添加了2个事件,dgvMaintenance_CellEndEdit和dgvMaintenance_CellMouseClick。
dgvMaintenance_CellEndEdit事件中记录更新的行(rowIndex)
dgvMaintenance_CellMouseClick事件判断,如果点击了该行的更新按钮就将数据保存回数据库,当然BUG还是有的,但这个不是关键问题,我的问题是:
该程序运行后,当我修改了其中一单元格的数据后,一定要点击其他行(不能点击本行)数据才能保存回数据库;或者是修改单元格数据后(不包括最后一行)按回车,这样在去点更新按钮,数据也能保存回数据库,但修改数据后,直接点击更新按钮,就无法保存数据。
这个问题困扰了我许久,一直想不明白,望遇到过此类问题的高手指点迷津。
小生将万分感谢。
主窗体上有一个DATAGRIDVIEW控件和一个BUTTON按钮控件
代码:
namespace WindowsApplication2
{
public partial class Form1 : Form
{
private SqlDataAdapter ad;
private DataSet ds; public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
ad = new SqlDataAdapter("select * from PayType",DB.conn);
ds = new DataSet();
ad.Fill(ds, "PayType");
this.dgvTest.DataSource = ds.Tables["PayType"];
} private void btnUpdate_Click(object sender, EventArgs e)
{
SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(ad);
ad.Update(ds,"PayType");
}
}
}
当点击了修改按钮时,会将修改后的数据保存回数据库中
窗体2设计:
主窗体中有一个DATAGRIDVIEW控件,DATAGRIDVIEW控件中新增加了一列为更新按钮,其他和上面的DATAGRIDVIEW没区别
然后我添加了2个事件,dgvMaintenance_CellEndEdit和dgvMaintenance_CellMouseClick。
dgvMaintenance_CellEndEdit事件中记录更新的行(rowIndex)
dgvMaintenance_CellMouseClick事件判断,如果点击了该行的更新按钮就将数据保存回数据库,当然BUG还是有的,但这个不是关键问题,我的问题是:
该程序运行后,当我修改了其中一单元格的数据后,一定要点击其他行(不能点击本行)数据才能保存回数据库;或者是修改单元格数据后(不包括最后一行)按回车,这样在去点更新按钮,数据也能保存回数据库,但修改数据后,直接点击更新按钮,就无法保存数据。
这个问题困扰了我许久,一直想不明白,望遇到过此类问题的高手指点迷津。
小生将万分感谢。
解决方案 »
- Microsoft.Office.Interop.Excel 缺少Interop 的引用
- 在局域网中如何获得网络中的各个主机名与其IP,谢谢~!
- DataGridViewCheckBoxColumn绑定int列的问题
- 请高手讲解一下C#开发 com的过程!
- 引用程序集和using命名空间的问题
- 怎么把TextBox里面的内容导出为txt啊
- .Net里怎么引用VS6.0里的控件
- 怎么水晶报表好像打不开带密码的Access文件,有人打开过吗?
- 请问使用OleDbCommandBuilder为什么不能给数据适配器自动生成SQL语句?
- 用C#如何查找任务管理里的进程?有源代码嘛?
- 请问C#与VB.NET区别大吗?
- 关于回文数
代码如下:
private void dgvMaintenance_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
Console.WriteLine(dgvMaintenance.IsCurrentRowDirty);
int columnIndex = e.ColumnIndex;
if (columnIndex == 0 && e.RowIndex == rowIndex)
{
rowIndex = -1;
sqlCmdBuilder = new SqlCommandBuilder(adapter);
adapter.Update(DB.ds, scrTable);
}
} private void dgvMaintenance_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
rowIndex = e.RowIndex;
} private void dgvMaintenance_CellLeave(object sender, DataGridViewCellEventArgs e)
{
this.dgvMaintenance.EndEdit();
} private void dgvMaintenance_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
{
this.dgvMaintenance.EndEdit();
}
例如我修改了第一行的某个数据后,直接去点同一行的任何一列,IsCurrentRowDirty都为true,表示该修改操作未提交。
//and then update ...