最近项目中遇到一个需求,需要根据GridView不同行的状态显示不同的操作,也就是要动态设置不同的按钮,最后找到如下方法:
private void gvHome_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
{
try
{
if (e.Column == ColumnArchiveOperation)
{
string sFlow = m_archiveDt.Rows[e.RowHandle]["fd_flow"].ToString().Trim();
if (sFlow.Length == 0)
{
//如果需要显示空白且不可编辑,则可以在此显示一个readonly=true的repositoryItemTextEdit
//也可以什么都不设置,只不过空白的单元格可以输入值,界面不够友好
e.RepositoryItem = repositoryItemTextEdit2;
return;
}
//为当前的cell创建button
RepositoryItemButtonEdit buttonEdit=new RepositoryItemButtonEdit();
e.RepositoryItem = buttonEdit;
buttonEdit.Buttons[0].Caption = sFlow;
}
catch (Exception ex)
{
MessageBox.Show("程序异常:" + ex.StackTrace);
}
}
效果图: