我有显示用户信息的网格。我有commandColumn with edit,delete命令。删除表示将用户状态更改为存档。我想要的是在具有状态活动的用户的行中删除按钮,并在具有状态存档的用户的行中恢复按钮(它可能只在文本中更改)。
我如何实现这样的功能?
答案 0 :(得分:3)
使用ASPxGridView的CommandButtonInitialize事件可以实现此类任务。有关使用此事件的示例,请访问:
此事件在我们的文档中描述: 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";
}
}