2009-09-09 7 views

Répondre

0

J'ai fini par créer un gestionnaire d'événements pour l'événement DataBound et la désactivation de la colonne de commande comme suit:

protected void ASPxGridView1_DataBound(object sender, EventArgs e) 
{ 
    if (!User.IsInRole(ConfigurationSettings.AppSettings["EditActiveDirectoryGroup"])) 
    { 
    foreach (GridViewColumn c in ASPxGridView1.Columns) 
    { 
     if (c.GetType() == typeof(GridViewCommandColumn)) 
     { 
     c.Visible = false; 
     } 
    } 
    } 
} 
1

Si vous utilisez l'édition sur place de lignes, il s'agira de masquer les contrôles qui permettraient à un utilisateur de modifier la grille.

Vous pouvez le faire en vous connectant à l'événement RowDataBound de GridView avec un gestionnaire d'événements et en vérifiant le rôle de l'utilisateur. Si la vérification échoue, masquez les contrôles d'édition.

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
    { 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (!Roles.IsUserInRole("Admin")) 
     { 
     // Hide the edit controls. 
     // This would be your "Edit" button or something. 
     e.Row.Cells[1].Controls[0].Visible = false; 
     } 
    } 
    } 
+0

Y a-t-il un RowDataBoundEvent? Voir http://www.devexpress.com/Support/Center/p/Q133547.aspx. – macleojw

+0

eee .. désolé je pensais que c'était une faute de frappe. Je n'ai pas réalisé qu'il y avait un composant tiers appelé "ASPxGrid". Eh bien, une alternative serait de parcourir toutes les lignes après que la grille ait fini d'être databound, plutôt que rangée par rangée. – womp

+0

ASPxGridView est un composant gridview qui fait partie du plugin DevExpress Visual Studio. – macleojw

0

Si vous souhaitez activer la EditButton conditionnelle seulement pour certaines lignes, il y a un exemple CQ66919 sur DevExpress.com.

En outre, ils se réfèrent à l'exemple E366 pour les versions plus récentes du ASPxGridView.

Questions connexes