我在datagrid1中修改数据,用ds.getchanges()得到的数据集竟然为空,为什么?代码如下string strSQL_baseSalary = "select a.person_id,b.name,a.paykind,a.basepay,b.department_id,c.depart_name from salary as a left join code_person as b on a.person_id=b.person_id left join code_depart as c on b.department_id=c.department_id";myConn = new SqlConnection(this.connectionString);
   da = new SqlDataAdapter(strSQL_baseSalary,myConn);   
   da.Fill(DS_salary,TN_salary);
   DT_salary = DS_salary.Tables[TN_salary];
   this.dataGrid1.DataSource = DT_salary;保存按钮:SqlCommand upInsCmd=new SqlCommand("update salary set person_id=@person_id,paykind=@paykind,basepay=@basepay",myConn);
     //insert into ["+TableName+"](id_burse,currency,money) values( @id_burse ,@currency,@money)
     upInsCmd.Parameters.Add("@person_id",SqlDbType.Char,18,"person_id");
     upInsCmd.Parameters.Add("@paykind",SqlDbType.Char,2,"paykind");
     upInsCmd.Parameters.Add("@basepay",SqlDbType.Decimal,2,"basepay");
     da.InsertCommand=upInsCmd;     da.Update(DS_salary.GetChanges(),TN_salary);//                        ~~~~~~~~~~~~~~~~~~~在datagrid1中修改数据之后,得到空数据集
     //   da.Update(dt.GetChanges(DataRowState.Deleted Or DataRowState.Added),TableName);//
     DS_salary.AcceptChanges();
     MessageBox.Show("保存成功","保存提示");请高手帮我分析一下 谢谢

解决方案 »

  1.   

    你现在的是upInsCmd是update salary set ......
    而下面是da.InsertCommand=upInsCmd;
    应该是da.UpdateCommand=upInsCmd;才对吧.
    另外这句 DS_salary.AcceptChanges(); 好象是不需要
    da.Update(DS_salary.GetChanges(),TN_salary);成功的话会包含执行DS_salary.AcceptChanges(); 当然多写点也没问题.
      

  2.   

    谢谢楼上的给我解答,并且帮我顶,
    现在已经改为da.UpdateCommand=upInsCmd但是现在还是存在的问题是:
    数据集中的数据在datagrid1中显示,但是我修改了datagrid1中的数据之后,
    da.Update(DS_salary.GetChanges(),TN_salary);
    中的DS_salary.GetChanges()为空,既然我已经在datagrid1中修改过了,为什么DS_salary.GetChanges()为空呢??