Предполагая, что у вас есть регулярное 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";
}
}
вы используете DataGrid или GridView? –
Im, использующий AspxGridView – gruber