在查询并显示到第三方控件DX的gridcontrol时使用了多表查询与操作
LoadData()中,using了2种方法,一种是sql语句,一种是jion
在cellChang事件中第一种查询方法可以getchanges,更新用手动maction的update,
第二种jion方法无法getchanges,手动更新到数据库也不能成功。。。不知为何,请帮忙看看,谢谢!
1:批量更新就是MDataTable的AcceptChanges操作。
由于你用的是第三方的控件,所以绑定之类的也是转成ToDataTable去处理,所以在控件回传也是回传到DataTable。
2:需要操作批量时,把绑定的DataTable转回到MDataTable。
这个时候,值的状态和DataTable的DataRowState状态有关。
或者用MDataTable的SetState(2);//这个是指定所有行都更新。
如果转后的MDataTable的TableName属性没有,要手工赋一下值。
3:直接调用MDataTable的AcceptChanges(Op.Update)。
--------批量操作是不需要单独用MAction的。
感谢秋神,我先试试
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");
}
}