如何在 XtraGrid 上将特定的行单元格设为只读(不可编辑)?例如,仅适用于 row[0] 但并非所有行。
问问题
12082 次
3 回答
8
您可以使用GridView.CustomRowCellEdit事件:
//...
var repositoryItemTextEditReadOnly = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit();
repositoryItemTextEditReadOnly.Name = "repositoryItemTextEditReadOnly";
repositoryItemTextEditReadOnly.ReadOnly = true;
//...
void gridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e) {
if(e.RowHandle == 0)
e.RepositoryItem = repositoryItemTextEditReadOnly;
}
于 2012-12-24T07:05:03.307 回答
0
您可以使用ColumnView.ShownEditor事件:
void gridView1_ShownEditor(object sender, EventArgs e)
{
ColumnView view = (ColumnView)sender;
view.ActiveEditor.Properties.ReadOnly = view.FocusedRowHandle == 0;
}
于 2014-04-07T06:31:36.923 回答
0
来源: 如何有条件地防止编辑单个网格单元
当您需要根据条件将网格单元格设为只读时,最好的方法是使用GridView的ShowingEditor事件, 并通过传递给事件的e.Cancel参数来阻止编辑。当需要防止编辑时,只需将其设置为 True。
// disable editing
private void gridView1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e) {
GridView view = sender as GridView;
e.Cancel = view.FocusedRowHandle == 0;
}
源代码 - 如何在 ButtonEdit 列中显示特定单元格的禁用按钮
另一种方法是按照@DmitryG 的建议分配一个只读存储库编辑器控件,并且有时当有一个包含按钮的列时,我也实现了这种方式。
在您的情况下,您应该创建两个 TextEdit 存储库项目。一个带有启用按钮,另一个带有禁用按钮。然后处理GridView.CustomRowCellEdit事件并根据特定条件将必要的存储库项传递给e.RepositoryItem参数。有关其他信息,请参阅为单个单元格分配编辑器帮助主题。
private void gridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
{
if (e.Column.Caption == "Any2")
{
if (e.RowHandle == 0)
e.RepositoryItem = columnReadOnlyTextEdit;
else
e.RepositoryItem = columnTextEdit;
}
}
于 2015-09-08T14:07:49.807 回答