2009-02-18 3 views
0

J'ai une page ASP.NET (VB.NET) qui contient une grille Infragistics. L'une des colonnes s'appelle 'status'. Lorsque je charge la grille, je définis des autorisations sur les champs au niveau de la colonne, accordant des rôles utilisateur (ENUM 'UserTypes') en lecture seule ou en lecture/écriture.Comment améliorer la méthode d'attribution d'autorisations de grille

Ensuite, je dois parcourir chaque ligne et affecter des permissions en fonction de la valeur (ENUM StatusVals) dans le champ 'status' ainsi que du rôle de l'utilisateur.

J'ai tout cela fonctionne, mais il semble maladroit et je veux l'améliorer.

Voici un aperçu de l'une des méthodes dans lesquelles je passe à la suite, le statut de l'enregistrement pour cette ligne, et le type d'utilisateur et la boucle à travers les cellules pour attribuer les autorisations et les couleurs. La question est la suivante: existe-t-il une façon plus élégante de faire cela pour que, au fur et à mesure que j'ajoute, cela ne devienne pas une bête?

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 

Répondre

0

Vous pouvez regarder dans le contrôle LoginView dans ASP.Net (2.0 et plus), il vous donne un contrôle basé sur un modèle qui associe des modèles de rôles ASP.Net, y compris non connecté (anonyme).

Ce QuickStarts, bien qu'un peu daté montre un exemple simple mais le point est fait plutôt proprement.

Questions connexes