Datagridview是net中最复杂的控件由于人们对表格的格式要求多种多样所以编写一个通用的Datagridview(类似JSF中的datatable)非常困难的
Datagridview中用户可以对行列单元格进行编程如行中可以插入下拉列表复选框编辑框单选框等多种控件每种控件都以DataGridView开头如单选框类为DataGridViewCheckBoxCell
DataGridViewCheckBoxCell有一些恶心的属性折磨了我很久下加以详细说明
FormattedValue属性
可能大家已经习惯了用checked=true或者checked=false这样直观的语句来取得checkbox的值但DataGridViewCheckBoxCell没有checked属性而使用了更复杂的FormattedValue
EditedFormattedValue属性
当 前checkbox的状态不管它是不是已经是一个“确认值”在我们在印象里checkbox只有true或false什么叫“确认值”呢?确认值 是指不管用户是不是已经离开该单元格(即确认该单元格最终的状态)都返回checkbox目前的值乍一听更糊涂了举个例子加以解释
() 初始时checkbox未选中用户点了一下于是checkbox会呈现勾选状态 这时EditedFormattedValue=true但FormattedValue=false这是因为用户没有“确认”这个值这个checkbox仍然处于编辑状态
() 初始时checkbox选中用户点了一下于是checkbox会呈现未勾选状态然后用户点击其它单元格
这 时EditedFormattedValue=false但FormattedValue=false这是因为用户离开这个单元格意味着用户已经 “确认”这个值这个checkbox不再处于编辑状态它的EditedFormattedValue==FormattedValue
这 时EditedFormattedValue=false但FormattedValue=false这是因为用户离开这个单元格意味着用户已经 “确认”这个值这个checkbox不再处于编辑状态它的EditedFormattedValue==FormattedValue 复制代码 代码如下: for (int i = ; i < dataGridViewRowsCount; i++) { DataGridViewCheckBoxCell chkBoxCell = (DataGridViewCheckBoxCell)dataGridViewRows[i]Cells[Column_IdIndex];
if (chkBoxCell != null && ((bool)chkBoxCellEditingCellFormattedValue == true || (bool)chkBoxCellFormattedValue == true)) {
} } |