有时候我们需要对单据进行审核操作,审核完成后就希望锁定主表单据,不让用户编辑,相对应的所有子表也要锁定,不让用户编辑。
VB.Net |
'定义并获得主表
Dim tbl As SmGrid=Proj.CurrentClickedGridMenu.BaseGrid.BaseBaseGrid
'判断一下当前行是否为空,不为空再继续执行后面的代码
If tbl.CurrentRowData IsNot Nothing Then
'修改单据状态
tbl.CurrentRowData("单据状态")="审核"
'锁定主表
tbl.CurrentRowData.Locked=True
'保存修改与锁定
tbl.CurrentRowData.Save
'重新加载子表
tbl.RaiseCurrentChangedEvent()
'循环遍历所有子表
For Each Item As IDataRuleGrid In tbl.Relation.ChildrenGrids
'转换子表类型
Dim tblDtl As BaseGrid=Item.BaseBaseGrid
'如果子表包含锁定列,则锁定整个子表
If tblDtl.DataTableHelp.SpecialCols.ContainsLock Then
'通过ReplaceFor锁定子表所有当前看到的数据。
tblDtl.DataTableHelp.ReplaceFor(tblDtl.DataTableHelp.SpecialCols.GetLockFlagColName(),True,tblDtl.Filter)
End If
'保存修改
tblDtl.Save()
Next
End If
|
C# |
// 定义并获得主表
SmGrid tbl = Proj.CurrentClickedGridMenu.BaseGrid.BaseBaseGrid as SmGrid;
// 判断一下当前行是否为空,不为空再继续执行后面的代码
if (tbl.CurrentRowData != null)
{
// 修改单据状态
tbl.CurrentRowData["单据状态"] = "审核";
// 锁定主表
tbl.CurrentRowData.Locked = true;
// 保存修改与锁定
tbl.CurrentRowData.Save();
// 重新加载子表
tbl.RaiseCurrentChangedEvent();
// 循环遍历所有子表
foreach (IDataRuleGrid Item in tbl.Relation.ChildrenGrids)
{
// 转换子表类型
BaseGrid tblDtl = Item.BaseBaseGrid;
// 如果子表包含锁定列,则锁定整个子表
if (tblDtl.DataTableHelp.SpecialCols.ContainsLock)
// 通过ReplaceFor锁定子表所有当前看到的数据。
tblDtl.DataTableHelp.ReplaceFor(tblDtl.DataTableHelp.SpecialCols.GetLockFlagColName(), true, tblDtl.Filter);
// 保存修改
tblDtl.Save();
}
}
|