public bool IsEditableCell(GridColumn col, int rowHandle)
{
if (col == null)
{
return false;
}
if (!this.view.OptionsBehavior.Editable || !col.OptionsColumn.AllowEdit)
{
return false;
}
if (!this.view.IsDataRow(rowHandle))
{
if (this.view.IsNewItemRow(rowHandle) || this.view.IsFilterRow(rowHandle))
{
return true;
}
else
{
return false;
}
}
object val = this.view.GetRowCellValue(rowHandle, col);
// 根据FormatCondition,通过HighPriority->ApplyToRow->Index的降序,取得Editable的Default以外有効条件
var p = from v in this.view.FormatConditions.OfType<BaseFormatCondition>()
where (v.Editable != DefaultBoolean.Default && v.CheckValue(col, val, this.view.GetDataSourceRowIndex(rowHandle)))
orderby (v.Appearance.Options.HighPriority ? 0 : 1), (v.ApplyToRow ? 1 : 0), this.view.FormatConditions.IndexOf(v)
descending select v.Editable;
return p.Count() == 0 || p.ElementAt(0) == DefaultBoolean.True;
}
}
public class BaseFormatCondition : DevExpress.XtraGrid.StyleFormatCondition
{
public BaseFormatCondition() : base() {}
public BaseFormatCondition(FormatConditionEnum condition) : base(condition) { }
public BaseFormatCondition(FormatConditionEnum condition,GridColumn column,object tag, object val1) : base(condition,column,tag,val1) { }
public BaseFormatCondition(FormatConditionEnum condition, GridColumn column, object tag, object val1, object val2) : base(condition, column, tag, val1, val2) { }
public BaseFormatCondition(FormatConditionEnum condition, GridColumn column, object tag, object val1, object val2, bool applyToRow) : base(condition, column, tag, val1, val2,applyToRow) { }
public BaseFormatCondition(FormatConditionEnum condition,AppearanceObject appearance, object tag, object val1, object val2, GridColumn column, bool applyToRow) : base(condition, tag, appearance, val1, val2,column, applyToRow) { }
[Browsable(true)]
[DefaultValue(DefaultBoolean.Default)]
[Description("指定条件是否可以编辑")]
public DefaultBoolean Editable
{
set
{
_editable = value;
}
get
{
return _editable;
}
}
private DefaultBoolean _editable = DefaultBoolean.Default;
public override void Assign(DevExpress.XtraEditors.StyleFormatConditionBase source)
{
base.Assign(source);
if (source is BaseFormatCondition) this.Editable = (source as BaseFormatCondition).Editable;
}
}
判断 DEV-〉XtraGrid-〉GridView 中某个单元格是否可以被编辑
最新推荐文章于 2023-07-19 20:15:01 发布