2011-02-26 3 views
0

J'ai une vue Grille. J'ai ajouté AutoGenerateEditButton=True.Affichage du bouton Modifier dans GridView basé sur le rôle

Je souhaite afficher ce bouton pour les utilisateurs appartenant à un certain rôle. Sinon, le bouton n'est pas rendu.

Que recommandez-vous? Quel événement dois-je gérer pour accomplir ce but? Dois-je travailler avec un contrôle basé sur un template tel que ListView?

Solution:

<Columns> 
    <asp:CommandField 
     ShowEditButton="True" /> 
    <asp:BoundField 
     DataField="Id" 
     ReadOnly="true" 
     Visible="true" />   
    <asp:BoundField 
     DataField="Title" 
     HeaderText="Title" />   
</Columns> 

Et l'événement Load du GridView:

if(!User.IsInRole("Manager")) 
{ 
    for (int i = 0; i < grdMovies.Columns.Count; i++) 
    { 
     if (grdMovies.Columns[i] is CommandField) 
     { 
      grdMovies.Columns[i].Visible = false; 
     } 
    } 
} 

Répondre

3

Utilisation ButtonField avec CommandName = Edit. Vous pouvez masquer la colonne en fonction Page_Load en fonction du rôle de l'utilisateur:

const int _editColumnIndex = 0; 

void Page_Load(object sender, EventArgs e) 
{ 
    if(!User.IsInRole("Manager"))  
     grdMovies.Columns[_editColumnIndex].Visible = false; 
} 
0

prendre en compte Quoi qu'il en soit ce code plus correct:

foreach (CommandField column in grdMovies.Columns.OfType<CommandField>) 
{ 
    column.Visible = false; 
} 
Questions connexes