2010-08-05 6 views
1

J'ai une grille qui affiche les informations des utilisateurs. J'ai commandColumn avec éditer, supprimer des commandes. Supprimer signifie changer le statut des utilisateurs à archiver. Ce que je veux est d'avoir le bouton de suppression dans les rangées avec les utilisateurs avec le statut actif et le bouton de restauration (il peut être seul changement dans le texte) dans les rangées avec les utilisateurs avec l'archive d'état.Modifier le texte du bouton deleteCommand

Comment puis-je obtenir une telle fonctionnalité?

+0

utilisez-vous un DataGrid ou un GridView? –

+0

Im utilisant AspxGridView – gruber

Répondre

3

Ces tâches sont possibles à mettre en œuvre en utilisant l'événement CommandButtonInitialize du ASPxGridView. Un exemple d'utilisation de cet événement est disponible à l'adresse:

http://community.devexpress.com/blogs/aspnet/archive/2009/01/13/how-to-disable-command-buttons-in-aspxgridview.aspx

Cet événement est décrit dans notre documentation à: http://documentation.devexpress.com/#AspNet/DevExpressWebASPxGridViewASPxGridView_CommandButtonInitializetopic

1

En supposant que vous avez une CommandField régulière au sein de votre réseau, placez le code suivant partout après la grille est chargée (l'événement DataBound est un bon endroit):

foreach (GridViewRow row in MyGridView.Rows) { 
    Button deleteButton = (Button)row.Cells(0).Controls(0); 
    if (statusOnThisRowIsActive) { 
     deleteButton.Text = "Active"; 
    } else { 
     deleteButton.Text = "Restore"; 
    } 
} 

Il est important de noter que la partie .Cells(0).Controls(0) sera besoin d'être déterminé manuellement pour votre grille - il se peut que votre bouton de suppression ne soit pas le premier contrôle dans la première cellule. Comme le codage en dur de l'emplacement du bouton de suppression rend cette solution fragile, il est préférable d'utiliser un bouton normal dans la grille, car vous pouvez ensuite utiliser FindControl pour obtenir une référence et modifier le texte.

Dans la grille:

<asp:TemplateField> 
    <asp:Button ID="btnDelete" runat="server" Text="Active" /> 
</asp:TemplateField> 

Dans le code sous-jacent:

foreach (GridViewRow row in MyGridView.Rows) { 
    Button deleteButton = row.FindControl("btnDelete"); 
    if (row != null && !statusOnThisRowIsActive()) { 
     deleteButton.Text = "Restore"; 
    } 
} 
Questions connexes