修改的dagagrid中值的时候,修改相应的DataSet的值,最后将?DataSet整个提交到数据库。

解决方案 »

  1.   

    怎么修改DataSet的值,怎么把dagagrid中修改的值传回DataSet中呀 !!
    如果是文本时还可以写 :
    DataSet dsFeeteam = new DataSet();
    dsFeeteam.Tables[FeeTeamData.FEE_TEAM_TABLE].Rows[0].BeginEdit();
    DataRow dr=dsFeeteam.Tables[FeeTeamData.FEE_TEAM_TABLE].Rows[0];
    dr[FeeTeamData.PKID_FIELD]=this.txtFeeTeamName.Tag;
    等等
    最后 一提交 就完了,但 DataGrid 我不会用,不知道怎么把所有 修改的值 取到 在给 DataSet
    来修改 DataSet, 然后 把它提交给数据库!!!!!!
      

  2.   

    数据更新时,遵守数据库更新顺序---先删除;后更新;再增加
    下面代码是将所有更改保存到数据库,但要看你是怎么操作了.......期间最容易出现的错误就是并发性冲突,光用下面的代码可能不能完全胜任你的要求......
    apter1.Update(dset1.Tables["表名"].Select("","",DataViewRowState.ModifiedCurrent));
    我自己写了个东西,为了更好的完成我的自己的任务,我用到下面的一些参数(自己看着比较乱,你看看吧,也许对你有帮助,你也可以查查相关资料,有这些介绍的):
    DataTable ds1 = dset1.myms.GetChanges(DataRowState.Deleted);
    DataTable ds2 = dset1.myms.GetChanges(DataRowState.Added);
    DataTable ds3 = dset1.myms.GetChanges(DataRowState.Modified);
    ................................................................
    BindingManagerBase myBindingManagerBase;
    myBindingManagerBase = BindingContext[dset1, "myms"];
    int rowNum = myBindingManagerBase.Position; //记录当前记录行的位置
    myBindingManagerBase.Position -= 1;
    ....................................................................
    if(ds1!=null)
    {
    apt1.Update(ds1);
    ds1.Dispose();
    }
    //更新
    apt1.Update(dset1.Tables["myms"].Select("","",DataViewRowState.ModifiedCurrent));
    if(ds2!=null)
    {
    apt1.Update(ds2);
    ds2.Dispose();
    }
    dset1.AcceptChanges();
    //由于新增记录后数据集得不到即时更新,先清楚再重新填充数据集到对象
    dset1.Clear();
    apt1.Fill(dset1);
    //由于用dset1.Clear();清除后重新填充会返回到第一条记录,用下面代码将记录导航到最后一条
    //这样有利于增加新记录后导航到新增加的记录上,便于更新操作!
    if(rowNum!=0){myBindingManagerBase.Position = rowNum;} //返回改更的行
    MessageBox.Show("数据更新成功!");
      

  3.   

    我的程序示图:
    http://www.newcan.net/qiang/demo.jpg