Winform项目使用了DevExpress 的GridControl,由于各行数据状态不同,需要动态设置每一行RepositoryItemHyperLinkEdit列的状态。可以操作的行不做处理,不可操作的行设置为只读状态,且不显示操作按钮。
解决方法:
创建两个 RepositoryItemHyperLinkEdit: 一个将 ReadOnly 属性设置为 true, 另一个设置为 false. 根据它们所在列的状态动态设置 GridView.CustomRowCellEdit 事件处理函数:
设置为false的为正常显示(可以操作)时列默认绑定的RepositoryItem。不可操作的设置如下:
private DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit _diabledRepositoryItemHyperLinkEdit = new DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit();
之后可以在构造函数中任意设置_diabledRepositoryItemHyperLinkEdit状态或属性。
private void advBandedGridView_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
{
if (e.Column.Name != “bandedGridColumn_Edit”) return;
ExampleModel model = (ExampleModel)_gridView.GetRow(e.RowHandle);
if (model !=null&&model .State.HasValue && model .State.Value ==1) return;
e.RepositoryItem = _diabledRepositoryItemHyperLinkEdit;
}