2010-09-16 8 views

Répondre

1

Vous pouvez également le faire à l'arrière. Transmettez l'ID utilisateur ou le rôle à un sp qui renvoie uniquement les colonnes visibles et les valeurs "X" pour les colonnes qu'ils ne peuvent pas voir et liez l'interface utilisateur à cela.

+0

Est allé avec cette solution, car il ne nécessite pas une boucle supplémentaire à travers les lignes ou des contrôles de rôles multiples. Le processus de vérification des rôles est un peu impliqué. – RememberME

2

Implémentez l'événement RowDataBound de GridView et effectuez les modifications si le rôle de sécurité de l'utilisateur est insuffisant.

void CusomGridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
    { 
    if(User.Role != "Admin") 
    { 
     e.Row.Cells[1].Text = "X"; 

    } 
    } 
2

Strictement parlant, non. Vous pouvez utiliser des méthodes d'extension de style Linq pour masquer l'implémentation, mais tout code dans un langage procédural va impliquer une boucle itérative à travers les lignes. Même l'événement RowDataBound est déclenché de manière itérative par chaque ligne; cependant, il s'agit d'itérer sur les lignes, donc au moins vous ne dupliquez pas le comportement de la boucle.

1

Vous pouvez simplement avoir une deuxième colonne disponible et prêtez-la "votre colonne2" remplie de données x, vous déterminez ensuite quelle colonne est visible en fonction du niveau d'accès administrateur.

Dans VB.NET, vous ne pouvez pas modifier les valeurs de chaque ligne sans récursion.

Questions connexes