更改deleteCommand按钮文本

时间:2010-08-05 13:37:02

标签: c# asp.net devexpress

我有显示用户信息的网格。我有commandColumn with edit,delete命令。删除表示将用户状态更改为存档。我想要的是在具有状态活动的用户的行中删除按钮,并在具有状态存档的用户的行中恢复按钮(它可能只在文本中更改)。

我如何实现这样的功能?

2 个答案:

答案 0 :(得分:3)

使用ASPxGridView的CommandButtonInitialize事件可以实现此类任务。有关使用此事件的示例,请访问:

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 :(得分: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";
    }
}