//设置数据源
checkedComboBoxEditFacility.Properties.DataSource = Facility.GetList(factoryID);
checkedComboBoxEditFacility.Properties.DisplayMember = "Name";
checkedComboBoxEditFacility.Properties.ValueMember = "ID";
//得到选择项的ID字符串(逗号分隔)
object items = processIDCheckedComboBoxEdit.Properties.GetCheckedItems();
processIDCheckedComboBoxEdit.SetEditValue(string.Empty);//重置
processIDCheckedComboBoxEdit.Properties.Items.Clear();//清空数据源
private void workshopCheckedComboBoxEdit_EditValueChanged(object sender, EventArgs e)
{
facilityCheckedComboBoxEdit.Clear();
string factoryIDs = factoryCheckedComboBoxEdit.GetCheckedItemsValue();
string workshopIds = workshopCheckedComboBoxEdit.GetCheckedItemsValue();
if (factoryIDs != string.Empty && factoryIDs.Split(',').Length == 1 )
{//仅当选择一个车间时才加载生产线
LoadFacility(factoryIDs, workshopIds);
}
}
//工厂选择事件
private void cbFactory_SelectedIndexChanged(object sender, EventArgs e)
{
this.LoadGroupNames();
Factory factory = cbFactory.SelectedItem as Factory;
if (factory != null)
{
LoadFacility(factory.ID);
}
else
{
checkedComboBoxEditFacility.Properties.DataSource = null;
}
foreach (CheckedListBoxItem item in checkedComboBoxEditFacility.Properties.Items)
{
item.CheckState = CheckState.Unchecked;
}
}
/// <summary>
/// 获取资源包ID
/// </summary>
/// <returns></returns>
private string GetFacilityID()
{
string ids = string.Empty;
for (int i = 0; i < checkedComboBoxEditFacility.Properties.Items.Count; i++)
{
CheckedListBoxItem item = checkedComboBoxEditFacility.Properties.Items[i];
if (item.CheckState == CheckState.Checked)
{
if (ids == string.Empty)
{
ids = item.Value.ToString();
}
else
{
ids += string.Format(",{0}", item.Value);
}
}
}
//没有选择任何项,则返回全部id列表字符串
if (string.IsNullOrEmpty(ids))
{
List<Facility> list = checkedComboBoxEditFacility.Properties.DataSource as List<Facility>;
if (list.Count > 0)
{
ids = string.Join(",", list.Select(m => m.ID.ToString()).ToArray());
}
}
return ids;
}
private void colorCheckedComboBoxEdit_EditValueChanged(object sender, EventArgs e)
{
object myColor = colorCheckedComboBoxEdit.Properties.GetCheckedItems();
if (myColor != null && string.IsNullOrEmpty(myColor.ToString()) == false)
{
List<string> colorList =
myColor.ToString().Replace(", ",",").Split(',').ToList();//必须的把空格替换掉
colorList.ForEach(m =>m=m.Trim().ToUpper());
foreach (PODetail model in m_SplitPOBll.PO.PODetailList)
{
if (colorList.Contains(model.POColor.Trim().ToUpper()))
{
model.IsSelected = true;
}
else
{
model.IsSelected = false;
}
}
CalcSplitAmount();
}
}
private void factoryNameCheckedComboBoxEdit_EditValueChanged(object sender, EventArgs e)
{
//当父数据源变更后,清空子关联的选择内容
workshopCheckedComboBoxEdit.Properties.Items.Clear();
string factoryIDs = factoryNameCheckedComboBoxEdit.Properties.GetCheckedItems().ToString();
if (string.IsNullOrEmpty(factoryIDs) == false)
{
LoadWorkshop(factoryIDs);
}
}
//设置选择的默认值
string ids = string.Join(",", model.TechnologyColors.Select(c => c.CustomColorId));
colorCheckedComboBoxEdit.SetEditValue(ids);
扩展方法:
public static class CheckedComboBoxEditExtension
{
/// <summary>
/// 清空显示值和列表
/// </summary>
/// <param name="checkedComboBoxEdit"></param>
public static void Clear(this CheckedComboBoxEdit checkedComboBoxEdit)
{
checkedComboBoxEdit.SetEditValue(string.Empty);
checkedComboBoxEdit.Properties.Items.Clear();
}
/// <summary>
/// 得到选择的值,即GetCheckedItems()
/// </summary>
/// <param name="checkedComboBoxEdit"></param>
/// <returns></returns>
public static string GetCheckedItemsValue(this CheckedComboBoxEdit checkedComboBoxEdit)
{
object items = checkedComboBoxEdit.Properties.GetCheckedItems();
if (items != null && string.IsNullOrEmpty(items.ToString()) == false)
{
return items.ToString().Replace(", ", ",");
}
return string.Empty;
}
}