65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 DataView 绑定 CheckListBoxControl

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.47/5 (9投票s)

2005年3月7日

viewsIcon

64664

将 DataView 与 CheckListBoxControl 绑定。

引言

经过漫长的一天努力,终于让 DevExpress XtraGrid 与一个未绑定的 CheckBox 列一起工作,但代价是 UI 的一致性。 所以我不得不选择另一种方案... CheckedListBoxControl

在使用 .NET 标准 CheckedListBoxControl 时,我找不到 DataSourceDisplayMemberValueMember 这些属性。 这可能是因为使用了较旧的 .NET Framework。 所以,与其陷入麻烦,我决定使用 DevExpress CheckedListBoxControl

以下是我为 CheckedListBoxControl 使用的通用方法的代码。 我想指出的是,我使用 DataView 作为 CheckedListBoxControl 的数据源,而不是简单的项目。 因此,.Items 属性在这里没有用处,但 .CheckedItems.CheckedIndices.ItemCount 属性却很有用。 .CheckedItems 返回所有复选框项目作为对象,而 .CheckedIndices 返回所有 .CheckState = "Checked" 项目的索引。 我使用这些索引作为 DataViewrowIndex 来从 DataView 中获取值。 因此,始终最好使用

foreach (int index in chkList.CheckedIndices)
 { ... = myDataRow[index].Row["FIELDNAME"].ToString(); ... }

来获取选中的值。

[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
© . All rights reserved.