winform下的datagrid问题请教
我是一个C#的初学者,尤其是winform下的编程,
我想在一个datagrid控件里完成数据的录入,修改和删除等工作,我写好了OleDbDataAdapter的SelectCommand,UpdateCommand和InsertCommand,并在绑定的DataTable里加了一个RowChanged事件,在该事件里写入DataAdapter的Update方法.在没写InsertCommand时,数据的修改很好,但是加入InsertCommand后,数据的录入不象想象中那样,新增的记录要录入两次,才能成功,就是说在DataGrid的单元格输入后,要使这个单元格失去焦点,然后再在这个单元格里输入,这样update方法才产生作用.
请问这是为什么?我什么地方做错了,怎么改正呢?
我是一个C#的初学者,尤其是winform下的编程,
我想在一个datagrid控件里完成数据的录入,修改和删除等工作,我写好了OleDbDataAdapter的SelectCommand,UpdateCommand和InsertCommand,并在绑定的DataTable里加了一个RowChanged事件,在该事件里写入DataAdapter的Update方法.在没写InsertCommand时,数据的修改很好,但是加入InsertCommand后,数据的录入不象想象中那样,新增的记录要录入两次,才能成功,就是说在DataGrid的单元格输入后,要使这个单元格失去焦点,然后再在这个单元格里输入,这样update方法才产生作用.
请问这是为什么?我什么地方做错了,怎么改正呢?
添加一个"保存修改"的按钮,用户点了保存之后,再调用DataAdapter的Update方法.
private void dt_RowChanged(object sender,DataRowChangeEventArgs e)
{
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = cn;
//cmd.Parameters.Clear();
switch (e.Action.ToString())
{
case "Change":
cmd.CommandText = "update incomeclass set classname = @classname " +
" where id = @id";
cmd.Parameters.Add("@classname",OleDbType.Char,255,"classname");
cmd.Parameters.Add("@id",OleDbType.Integer,8,"id");
rs.UpdateCommand = cmd;
break; case "Add":
cmd.Parameters.Add("@ClassName",OleDbType.Char,255,"ClassName");
cmd.CommandText = "Insert Into IncomeClass (ClassName) Values (@ClassName)";
rs.InsertCommand = cmd;
break;
}
try
{
txt1.Text = rs.Update(dt).ToString(); }
catch (Exception er)
{
MessageBox.Show(er.Message.ToString());
}
}