Предполагая, что в вашей сетке есть обычный CommandField, поместите следующий код в любое место после загрузки сетки (событие DataBound является хорошим местом):
foreach (GridViewRow row in MyGridView.Rows) {
Button deleteButton = (Button)row.Cells(0).Controls(0);
if (statusOnThisRowIsActive) {
deleteButton.Text = "Active";
} else {
deleteButton.Text = "Restore";
}
}
Важно отметить, что .Cells(0).Controls(0)
часть должна быть определена вручную для вашей сетки - возможно, ваша кнопка удаления не является первым элементом управления в первой ячейке.Поскольку жесткое программирование расположения кнопки удаления делает это решение хрупким, на самом деле лучше использовать обычную кнопку в сетке, поскольку затем вы можете использовать FindControl, чтобы получить ссылку на нее и изменить текст.
В сетке:
<asp:TemplateField>
<asp:Button ID="btnDelete" runat="server" Text="Active" />
</asp:TemplateField>
В коде позади:
foreach (GridViewRow row in MyGridView.Rows) {
Button deleteButton = row.FindControl("btnDelete");
if (row != null && !statusOnThisRowIsActive()) {
deleteButton.Text = "Restore";
}
}