首页 新闻 会员 周边 捐助

请问多表操作如何更新或批量更新

0
[已解决问题] 解决于 2016-08-24 20:17

在查询并显示到第三方控件DX的gridcontrol时使用了多表查询与操作

LoadData()中,using了2种方法,一种是sql语句,一种是jion

在cellChang事件中第一种查询方法可以getchanges,更新用手动maction的update,

第二种jion方法无法getchanges,手动更新到数据库也不能成功。。。不知为何,请帮忙看看,谢谢!

勤劳致富的主页 勤劳致富 | 菜鸟二级 | 园豆:204
提问于:2016-08-21 18:03
< >
分享
最佳答案
0

1:批量更新就是MDataTable的AcceptChanges操作。

由于你用的是第三方的控件,所以绑定之类的也是转成ToDataTable去处理,所以在控件回传也是回传到DataTable。

2:需要操作批量时,把绑定的DataTable转回到MDataTable。

这个时候,值的状态和DataTable的DataRowState状态有关。

或者用MDataTable的SetState(2);//这个是指定所有行都更新。

如果转后的MDataTable的TableName属性没有,要手工赋一下值。

3:直接调用MDataTable的AcceptChanges(Op.Update)。

--------批量操作是不需要单独用MAction的。

奖励园豆:5
路过秋天 | 老鸟四级 |园豆:4787 | 2016-08-21 18:14

感谢秋神,我先试试

勤劳致富 | 园豆:204 (菜鸟二级) | 2016-08-21 18:22

public Form1()
{
InitializeComponent();
AppConfig.DB.DefaultConn = "Data Source=demo.db;failifmissing=false;";

LoadData();
}

MDataTable ndt;
private void LoadData()
{
MDataTable dt;
using (MAction action = new MAction("Article"))
{
dt = action.Select();
}
dt.JoinOnName = "UserID";
ndt = dt.Join("Users", "UserID", "Name", "EditTime");
gridControl1.DataSource = ndt.ToDataTable();
}

MDataTable cdt;
private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
DataTable dd = gridControl1.DataSource as DataTable;
ndt = dd;
MDataTable dt = ndt.SetState(2);
cdt = dt.GetChanges();
if (dt.AcceptChanges(AcceptOp.Update))
{
LoadData();
MessageBox.Show("Done");
}
}

勤劳致富 | 园豆:204 (菜鸟二级) | 2016-08-21 20:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册