我使用的是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就弹出?
------解决思路----------------------
把gridControl的 多行选择 属性 设置为false。