datagrid控件中,选定一行再按delete键以后,这一行就不见了!但是并没有从数据库中删除!怎么解决?谢! you have to use Adapter to update the databaseSqlDataAdapter da = ....;da.Update(YourDataSet);YourDataSet.AcceptChanges(); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //sqlda 是SqlDataAdapter,dt 是DataSet,person是表的名字try{sqlDa.Update(dt.GetChanges(),"person")); myTran.Commit();return true;}catch(System.Data.SqlClient.SqlException ex){myTran.Rollback();return false;} finally{conn.Close();}//最后加一句这个,下一次删除时就不用再更新这条啦 dt.Tables[0].AcceptChanges(); 但是你们说的并不能实现我选中一行再按delete键就不删除那一列雅!? 我想各位大虾误会了我的意思,我要实现的是:选中datagrid中的一行,然后按delete键,datagrid表格中的那一行不会有什么反映!另外,我如果要这个功能起作用,那么应该把SqlDataAdapter da = ....;da.Update(YourDataSet);YourDataSet.AcceptChanges();写在什么事件里面??? seehttp://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q889qpublic override bool PreProcessMessage( ref Message msg ) { Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode; if(msg.Msg == WM_KEYDOWN && keyCode == Keys.Delete && ((DataView) this.DataSource).AllowDelete) { //这里 if(MessageBox.Show("Delete this row?", "", MessageBoxButtons.YesNo) == DialogResult.No) return true; } return base.PreProcessMessage(ref msg); } WM_KEYDOWN这里报错::名称“WM_KEYDOWN”在类或命名空间“abc.Form2”中不存在 add the following in your class declaration:const int WM_KEYDOWN = 0x100; const int WM_KEYUP = 0x101; 开始的时候报错:不存在this.DataSource的定义,所以我改为了this.dataGrid1.DataSource,改了以后,这段函数根本就部起作用?设置断点在if语句那里,运行程序,选中datagrid的一行,然后再按delete键,发现程序根本就不会到达那里???麻烦了!!! 我的数据源不是DataView,所以我把((DataView) this.DataSource).AllowDelete去掉了,可是还是没有反应? PreProcessMessage函数应该放在哪个事件里面?参数改怎么给?麻烦麻烦!我刚学c#! C# 如何制作类似音速启动的列表?(鼠标可以多选) sqlserver 如何生成一个字母加数字组合唯一的编号 如何设置网页连接超时的时间 ADO.NET 菜鸟问题 怎样获得HttpSessionState的对象 access数据库插入方法报错 关于VS2005出错。 求计时器精度小于5毫秒 求助各位老大? 我在安装VISUAL.NET的时候,最后1分钟报错,装了几次都装不上去,HELP!!! 关于非托管代码返回结构体指针的内容,该怎么调出来呢。~~~~~~~~~GGJJ们帮忙啊。~~~~~~ 如何在form中点击按钮关闭整个工程?急!在线等
try
{
sqlDa.Update(dt.GetChanges(),"person"));
myTran.Commit();
return true;
}
catch(System.Data.SqlClient.SqlException ex)
{
myTran.Rollback();
return false;
}
finally
{
conn.Close();
}
//最后加一句这个,下一次删除时就不用再更新这条啦
dt.Tables[0].AcceptChanges();
另外,我如果要这个功能起作用,那么应该把
SqlDataAdapter da = ....;
da.Update(YourDataSet);
YourDataSet.AcceptChanges();
写在什么事件里面???
public override bool PreProcessMessage( ref Message msg )
{
Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;
if(msg.Msg == WM_KEYDOWN
&& keyCode == Keys.Delete
&& ((DataView) this.DataSource).AllowDelete)
{
//这里 if(MessageBox.Show("Delete this row?", "", MessageBoxButtons.YesNo) == DialogResult.No)
return true;
}
return base.PreProcessMessage(ref msg);
}
:名称“WM_KEYDOWN”在类或命名空间“abc.Form2”中不存在
const int WM_KEYUP = 0x101;
,改了以后,这段函数根本就部起作用?设置断点在if语句那里,运行程序,选中datagrid的一行,然后再按delete键,发现程序根本就不会到达那里???
麻烦了!!!