当前位置: 代码迷 >> C# >> gridcontrol中checkbox获取不到解决方法
  详细解决方案

gridcontrol中checkbox获取不到解决方法

热度:126   发布时间:2016-05-05 04:53:33.0
gridcontrol中checkbox获取不到
我使用的是devexpress的gridcontrol控件
由于列名不确定,我没有在前台设计视图中添加选择列
而是用先在datable中添加选择列,再设置数据源的方式

添加列的代码

    DataSet ds = ConnectionHelper.ExecuteQuery(sql, txtPath.Text);
    ds.Tables[0].Columns.Add(new DataColumn("列选择", typeof(System.Boolean)));
    ds.Tables[0].Columns["列选择"].SetOrdinal(0);
    gcList.DataSource = ds.Tables[0];
    gvList.BestFitColumns();


获取选择数据代码(是一个按钮的点击事件)

  int cnt = 0;
 for (int i = 0; i < gvList.RowCount; i++)
   {
         bool IsSelected = (bool)gvList.GetRowCellValue(i, "列选择");
         if (IsSelected)
           {
                  // cnt += InsertData(i);
                    cnt += 1;
           }
    }
    if (cnt > 0)
    {
         MessageBox.Show("共选择" + cnt.ToString() + "条数据");
   }


当我选择一行复选框的时候,没有任何提示,cnt计数为0,实际应为1条
当选择2行复选框时,提示选了1条数据,cnt计数为1,实际应为2条
当我再去打一个复选框,提示选了2条数据,cnt计数为2,实际应为1条

怎么回事呀。。。每次的结果要晚一步才能得到
------解决思路----------------------
不要使用GetRowCellValue方法,使用GetDataRow(index)方法,返回的是一个DataRow,再根据cell的index 取值判断。
------解决思路----------------------
你确定你是点了按钮之后获取结果,而不是鼠标点下了checkbox就弹出?
------解决思路----------------------
引用:
我明白了,每次点击checkbox,需要焦点移出这个checkbox后才算是编辑过,否则认为没有编辑过
我点第一个checkbox,还没有移出焦点,所以程序认为现在勾选的是0个
点第二个checkbox,第一个移出了焦点,但第二个编辑了但没有移出焦点,所以程序认为勾选的是1个

如何解决这个问题?

把gridControl的  多行选择 属性 设置为false。
  相关解决方案