2010-08-05 8 views
1

У меня есть сетка, которая отображает информацию о пользователях. У меня есть commandColumn с командой редактирования, удаления. Удалить означает изменение статуса пользователей для архивирования. Я хочу, чтобы кнопка удаления в строках с пользователями со статусной активностью и кнопкой восстановления (это может быть только изменение текста) в строках с пользователями с архивом состояния.Изменить текст кнопки deleteCommand

Как достичь такой функциональности?

+0

вы используете DataGrid или GridView? –

+0

Im, использующий AspxGridView – gruber

ответ

3

Такие задачи можно реализовать с помощью события CommandButtonInitialize в ASPxGridView в. Пример использования этого события доступна по адресу:

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

Это событие описано в нашей документации по адресу: http://documentation.devexpress.com/#AspNet/DevExpressWebASPxGridViewASPxGridView_CommandButtonInitializetopic

1

Предполагая, что у вас есть регулярное 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"; 
    } 
} 
Смежные вопросы