Previous topicNext topic
Help > 开发指南 > 数据处理典型场景 > 表格常规操作 >
审核并锁定单据及所有子表

有时候我们需要对单据进行审核操作,审核完成后就希望锁定主表单据,不让用户编辑,相对应的所有子表也要锁定,不让用户编辑。

 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();
    }
}