Previous topicNext topic
Help > 功能概览 > 用户权限管理 > 权限设置 >
自定义权限

如果还想作更精细的权限控制,还可以通过代码来控制字段的可编辑状态。在表的StartEdit事件中,我们可以根据用户的角色先判断是否能够继续编辑数据。

 VB.Net
Public Sub StartEdit(sender As Object,e As  C1.Win.C1FlexGrid.RowColEventArgs)
    '根据事件触发对象获得表对象
    Dim tbl As SmGrid=sender
    '根据Col对象获得列名称
    Dim strColName=tbl.Cols(e.Col).Name
    Select Case strColName
        Case "控制列"
            '下面判断角色或者用户的方法只是演示,请根据自己实际情况进行修改
            If Proj.User.Roles.Contains("角色ID") OrElse Proj.User.UserName="A用户" OrElse Proj.User.RoleNames.Contains("会计") OrElse Proj.User.UserID="用户ID" Then
                '禁止编辑
                e.Cancel=True
            Else
                e.Cancel=False
            End If
        Case ""
    End Select
End Sub

C#
public void StartEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
{
    // 根据事件触发对象获得表对象
    SmGrid tbl = sender;
    // 根据Col对象获得列名称
    string strColName = tbl.Cols[e.Col].Name;
    switch (strColName)
    {
        case "控制列":
            {
                // 下面判断角色或者用户的方法只是演示,请根据自己实际情况进行修改
                if (Proj.User.Roles.Contains("角色ID") || Proj.User.UserName == "A用户" || Proj.User.RoleNames.Contains("会计") || Proj.User.UserID == "用户ID")
                    // 禁止编辑
                    e.Cancel = true;
                else
                    e.Cancel = false;
                break;
            }

        case "":
            {
                break;
            }
    }
}