介绍 经过一整天的努力,我终于成功地让DevExpress XtraGrid使用一个未绑定的复选框colum,但代价是UI的一致性。所以我不得不选择另一个选择…CheckedListBoxControl。 使用。net标准CheckedListBoxControl,我找不到属性DataSource, DisplayMember和ValueMember。原因可能是一个更老的。net框架。因此,为了避免麻烦,我决定使用DevExpress checkedlistbox控件。 下面是我对checkedlistbox控件使用的通用方法的代码。我想在这里指出,我使用了一个DataView作为我的CheckedListBoxControl的数据源,而不是简单的项。所以。ite ms属性在这里没有任何用处,但是。checkeditems, . checkedindices和. itemcount属性被使用。. checkeditems返回所有复选框项目作为一个对象,而. checkedindices返回所有. checkstate = "Checked"项目的索引。我使用这些索引作为DataView的rowIndex来从DataView中获取值。所以最好还是使用隐藏。复制Code
foreach (int index in chkList.CheckedIndices) { ... = myDataRow[index].Row["FIELDNAME"].ToString(); ... }
以获取检查的值。隐藏,收缩,复制Code
[C#] #region CheckBox Generic Methods public void SelectAll(DevExpress.XtraEditors.CheckedListBoxControl chkList) { for(int i=0;i< chkList.ItemCount;i++) { chkList.SetItemChecked(i, true); } } public void RemoveAll(DevExpress.XtraEditors.CheckedListBoxControl chkList) { for(int i=0;i< chkList.ItemCount;i++) { chkList.SetItemChecked(i, false); } } public bool Checked(DataView dvSource, DevExpress.XtraEditors.CheckedListBoxControl chkList, string keyID, string fieldName) { bool stat = false; try{ for (int i=0; i< dvSource.Count; i++ ) { if (dvSource[i].Row[fieldName].ToString() == keyID) { chkList.SetItemChecked (i, true); stat = true; break; } } } catch(Exception ex){ Code.ShowMessage(ex.ToString()); } return stat; } public bool UnChecked(DataView dvSource, DevExpress.XtraEditors.CheckedListBoxControl chkList, string keyID, string fieldName) { bool stat = false; try{ for (int i=0; i< dvSource.Count; i++ ) { if (dvSource[i].Row[fieldName].ToString() == keyID.ToString()) { chkList.SetItemChecked (i, false); stat = true; break; } } } catch(Exception ex){ Code.ShowMessage(ex.ToString()); } return stat; } #endregion
本文转载于:http://www.diyabc.com/frontweb/news368.html