单击checkEdit项时,gridcontrol中的IsSetData永远不会为true

时间:2011-04-05 17:59:17

标签: c# devexpress gridcontrol

我有这个DevExpress GridContro l我添加了两个coloums,其中包含repositoryItemCheckEdit和另一个普通string类别说明。

现在我在属性部分中将repositoryItemCheckEdit设为未绑定的bool并添加gridView1_CustomUnboundColumnData事件,该事件以e.IsGetData为真,但e.IsSetData永远不会为真当我点击复选框时。谁能解释为什么会这样? 感谢

private void gridView1_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
{
  if (e.IsGetData)
  {
    string itemKey = ((CategoryTable)(gridControl1.ViewCollection[0]).GetRow(e.RowHandle)).Category;
    if (AddressDoc == itemKey) e.Value = true
    else e.Value = false;
  }

  if (e.IsSetData)
    AddressDoc = ((CategoryTable)(gridControl1.ViewCollection[0]).GetRow(e.RowHandle)).Category;
}

1 个答案:

答案 0 :(得分:0)

请尝试使用我们网站上发布的How to save the value of an in-place check box as soon as it is changed知识库文章中的解决方案。它应该可以帮助您解决此问题。此外,我已经审查了您的代码,它看起来并不安全。我会改变如下:

private void gridView1_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e) {
            GridView gridView = sender as GridView;
            DataView dv = gridView.DataSource;
            object c = DataView[e.ListSourceRowIndex]["Category"];
            string itemKey = c == null ? "" : c.ToString();
            if (e.IsGetData) {
                if(AddressDoc == itemKey)
                    e.Value = true;
                else 
                    e.Value = false;
            }
            if(e.IsSetData)
                AddressDoc = itemKey;
        }

我只能认为你没有正确调整未绑定的列。注意:列应满足两个强制条件: 1)它的FieldName应设置为其他GridView列的fieldName属性中的唯一值; 2)列的UnboundType应设置为非Bound值。