CheckEdit为XtraGrid列

时间:2011-06-18 22:08:43

标签: devexpress checkbox xtragrid checked

edit = gridView1.GridControl.RepositoryItems.Add("CheckEdit") as RepositoryItemCheckEdit;
column = gridView1.Columns.Add();
column.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False;
column.VisibleIndex = 0;
column.FieldName = "CheckMarkSelection";
column.Caption = "Mark";
column.OptionsColumn.ShowCaption = false;
column.UnboundType = DevExpress.Data.UnboundColumnType.Boolean;
edit.NullStyle = StyleIndeterminate.Unchecked;
column.ColumnEdit = edit;

我想我成功地在checkedit中添加了gridview列,但我仍然无法检查多行,也无法访问编辑的检查状态。为什么?我将不胜感激,因为我已经为此奋斗了3天

3 个答案:

答案 0 :(得分:3)

使用gridview的设计者。转到列,选择您想要作为检查的列。转到ColumnEdit并选择一个checkedit。那么你真的应该能够为这个编辑器检查多行。 Multiselect(同时选择多行)在OptionsBehavior中我猜。当我在工作(明天)时,我可以为您提供样品。这肯定不是很难。

答案 1 :(得分:1)

出现问题是因为该列已标记为未绑定。在这种情况下,GridView会生成CustomUnboundColumnData事件,该事件可用于向此列提供数据并保存。我认为您应该处理此事件以解决原始问题。

答案 2 :(得分:0)

在GridDesigner中,对于CheckEdit,将“NullStyle”属性设置为“Unchecked”,对于要用于CheckEdit的列,将“FieldName”属性设置为数据表中列的名称(我使用过) “col1”表示布尔值为true,false)。在GridDesigner中设置所有内容后,必须为列声明类型。例如,我使用了这样的代码;

public DataTable datas = new DataTable();

private void Form1_Load(object sender, EventArgs e)
    {
        datas.Columns.Add("col1", typeof(bool));
        datas.Columns.Add("col2", typeof(string));
        datas.Columns.Add("col3");
        gridControl.DataSource = datas;
    }

datas.Rows.Add(False, "someValue", "");
datas.Rows.Add(False, "someValue", "");
datas.Rows.Add(True, "someValue", "");
datas.Rows.Add(False, "someValue", "");

它应该工作。我希望这是你问题的解决方案。感谢。