如果还想作更精细的权限控制,还可以通过代码来控制字段的可编辑状态。在表的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; } } } |