如何改进分配网格权限的方法

时间:2009-02-18 15:50:16

标签: asp.net refactoring

我有一个ASP.NET(VB.NET)页面,上面有Infragistics网格。其中一列称为“状态”。

当我加载网格时,我正在设置列级别字段的权限,授予用户角色(ENUM'UserTypes')read / only或读/写权限。

接下来,我需要循环遍历每一行,并根据字段“status”中的值(ENUM StatusVals)以及用户角色分配权限。

我已经完成了所有这些工作,但看起来很笨重,我想改进它。

这是我连续传递的方法之一的快照,该行的记录状态,以及用户类型和循环遍历单元格以分配权限和颜色。问题是:是否有一种更优雅的方式来做到这一点,因为当我添加它,它不会成为一个野兽?

    Private Shared Sub SetDetailRowReadWrite_ByStatusVal(ByVal DetailRow As
 ig.UltraGridRow, ByVal sv As StatusVals, ByVal UserType As UserRoles)
    If sv = StatusVals.Pending _
        OrElse sv = StatusVals.Released _
        OrElse sv = StatusVals.Shipped _
        OrElse sv = StatusVals.Consolidated _
        OrElse sv = StatusVals.HOLD _
        OrElse sv = StatusVals.Cancelled _
        OrElse sv = StatusVals.PartialShipped Then

        For Each column As ig.UltraGridCell In DetailRow.Cells
            If column.Key = "StatusVal" Then
                column.Style.BackColor = Drawing.Color.LightGreen
                column.Style.ForeColor = Drawing.Color.Black

                If UserType = UserRoles.Fulfillment Then
                    SetFulfillmentStatusValEditPermission(sv, column)
                End If
            ElseIf Not (sv = StatusVals.Consolidated AndAlso UserType = UserRoles.Fulfillment) Then
                column.Style.BackColor = Drawing.Color.White
                column.AllowEditing = ig.AllowEditing.No
            End If
        Next

        LockSizesRow(DetailRow, UserType, sv)

    ElseIf sv = StatusVals.Incomplete AndAlso UserType = UserRoles.Fulfillment Then
        For Each c As ig.UltraGridCell In DetailRow.Cells
            c.AllowEditing = UltraWebGrid.AllowEditing.No
        Next
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

您可能想要查看ASP.Net(2.0及更高版本)中的LoginView控件,它会为您提供模板控件,将模板映射到ASP.Net角色,包括未登录(匿名)。

这个QuickStarts虽然有点过时,但它表明了一个简单的例子,但这一点非常干净。