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";
}
}
utilisez-vous un DataGrid ou un GridView? –
Im utilisant AspxGridView – gruber