Question

J'ai un ASPxGridView que je voudrais autoriser à certains utilisateurs à lire et à d'autres utilisateurs en écriture. Idéalement, cela serait basé sur des groupes Active Directory.
Comment puis-je faire cela?

Était-ce utile?

La solution 2

J'ai fini par créer un gestionnaire d'événements pour l'événement DataBound et en désactivant 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;
      }
    }
  }
}

Autres conseils

Si vous utilisez l'édition sur place de lignes, il vous suffira alors de masquer les commandes permettant à un utilisateur de modifier la grille.

Vous pouvez le faire en raccordant 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 de modification.

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;  
      }
    }
  }

Si vous souhaitez activer le EditButton uniquement pour certaines lignes, vous trouverez un exemple CQ66919 sur DevExpress.com.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top