0

我在 DevExpress XtraGrid 控件中的 checkedit 有问题。

我已经在代码中创建了未绑定的列(不是通过向导),并且该复选框不能用鼠标选中。

这是我的代码:

Private Sub DataViewFrm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Dim data As New DataTable
    data=getDataTable("select....")

    gridViewer.DataSource = data

    Dim Tick As New RepositoryItemCheckEdit()

    gridViewer.Refresh()

    Dim unbColumn As GridColumn = gridvwViewer.Columns.AddField("Coba")
    unbColumn.VisibleIndex = gridvwViewer.Columns.Count
    unbColumn.UnboundType = DevExpress.Data.UnboundColumnType.Boolean
    unbColumn.OptionsColumn.AllowEdit = True
    unbColumn.OptionsColumn.ReadOnly = False

    gridvwViewer.Columns(8).ColumnEdit = Tick     
End Sub

结果如下:截屏

4

1 回答 1

2

您应该通过处理ColumnView.CustomUnboundColumnData事件为未绑定的列提供数据。以下是读/写场景 (C#)
的事件用法演示:ColumnView.CustomUnboundColumnData

//...
var unbColumn = gridView1.Columns.AddField("Coba");
unbColumn.VisibleIndex = gridView1.Columns.Count;
unbColumn.UnboundType = DevExpress.Data.UnboundColumnType.Boolean;
CobaValues = new Dictionary<int, bool>();
gridView1.CustomUnboundColumnData += gridView1_CustomUnboundColumnData;

//...
IDictionary<int, bool> CobaValues;
void gridView1_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e) {
    if(e.Column.FieldName == "Coba") {
        if(e.IsGetData) {
            bool value;
            if(CobaValues.TryGetValue(e.ListSourceRowIndex, out value))
                e.Value = value;
        }
        if(e.IsSetData) {
            CobaValues[e.ListSourceRowIndex] = (bool)e.Value;
        }
    }
}
于 2013-10-14T07:19:03.540 回答