namespace HStation.WinFrmUI.Basic { public partial class SetSysPropForCatalogDlg : DevExpress.XtraEditors.XtraForm { public SetSysPropForCatalogDlg() { InitializeComponent(); repositoryItemCheckedComboBoxEdit1.DisplayMember = "Name"; repositoryItemCheckedComboBoxEdit1.ValueMember = "Name"; this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon; } private List _allBindingList = new List(); private Yw.BLL.SysPropMapping _bll = null; private long _CatlogID; public async void SetBindingData(long ID) { _CatlogID = ID; _bll = new Yw.BLL.SysPropMapping(); var PropTreeList = await _bll.GetHaveListByCatalogID(ID); if (PropTreeList != null) { foreach (var item in PropTreeList) { repositoryItemCheckedComboBoxEdit1.Items.Clear(); var parent = new SysPropMappingViewModel(); parent.ID = item.ID; parent.IsGroup = true; parent.Name = item.Name; _allBindingList.Add(parent); if (item.PropList.Count > 0) { foreach (var child in item.PropList) { var model = new SysPropMappingViewModel(); model.GroupName = item.Name; model.ID = child.ID; model.ParentID = item.ID; model.Name = child.Name; model.IsHave = child.Have; model.IsNull = child.IsNull; model.DefaultValue = child.DefaultValue; model.UnitName = child.UnitName; model.Inherit = child.Inherit; model.ChoiceList = child.ChoiceList; model.ChoiceIds = child.ChoiceList.Where(x => x.Have).Select(x => x.ID).ToList(); var stringList = child.ChoiceList.Where(x => x.Have == true).ToList().Select(x => x.Name.ToString()).ToList(); string result = string.Join(", ", stringList); model.DisplayChoice = result; _allBindingList.Add(model); } } } } this.sysCatalogPropViewModelBindingSource.DataSource = _allBindingList; this.treeList1.ExpandAll(); } // 完成 private async void BtnOk_Click(object sender, EventArgs e) { var list = new List(); foreach (var item in _allBindingList) { if (item.IsHave) { list.Add(new Yw.Vmo.SysPropMappingSetterVmo { PropID = item.ID, UnitName = item.UnitName, IsNull = item.IsNull, DefaultValue = item.DefaultValue, ChoiceIds = item.ChoiceIds, }); } } if (await _bll.SetByCatalogID(_CatlogID, list)) { MessageBoxHelper.ShowSuccess("修改成功!"); } else { MessageBoxHelper.ShowError("修改失败"!); return; } this.Close(); } private void repositoryItemCheckedComboBoxEdit1_EditValueChanged(object sender, EventArgs e) { try { var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) return; var allselectList = repositoryItemCheckedComboBoxEdit1.GetCheckedItems(); var strList = Convert.ToString(allselectList); if (strList != null && strList != string.Empty) { if (strList.Contains(',')) { string[] parts = strList.Split(','); List longs = parts.Select(part => long.Parse(part.Trim())).ToList(); vm.ChoiceIds = longs; } else { if (long.TryParse(strList, out long Id)) { List choiceId = new List(); choiceId.Add(Id); vm.ChoiceIds = choiceId; } } } else { vm.ChoiceIds = new List(); } } catch (Exception ex) { } } private void treeList1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e) { var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { return; } if (vm.Inherit) { e.Cancel = true; } if (vm.IsGroup) { e.Cancel = true; } if (treeList1.FocusedColumn.Name == "colPropChoice") { repositoryItemCheckedComboBoxEdit1.Items.Clear(); repositoryItemCheckedComboBoxEdit1.DataSource = vm.ChoiceList; } } private void treeList1_CustomDrawNodeCell(object sender, DevExpress.XtraTreeList.CustomDrawNodeCellEventArgs e) { if (e.Node != null) { string Inherit = e.Node.GetValue("Inherit").ToString(); string isGroup = e.Node.GetValue("IsGroup").ToString(); if (Inherit == "True") { e.Appearance.BackColor = Color.DarkGray; } if (isGroup == "True") { e.Appearance.BackColor = Color.Gainsboro; } } } private void treeList1_BeforeCheckNode(object sender, DevExpress.XtraTreeList.CheckNodeEventArgs e) { string Inherit = e.Node.GetValue("Inherit").ToString(); if (Inherit == "True") { e.State = CheckState.Checked; } else { if (e.PrevState == CheckState.Checked) { e.State = CheckState.Unchecked; } else { e.State = CheckState.Checked; } } } private void treeList1_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e) { SetCheckedChildNodes(e.Node, e.Node.CheckState, e); } #region 设置子节点状态 private void SetCheckedChildNodes(DevExpress.XtraTreeList.Nodes.TreeListNode node, CheckState check, DevExpress.XtraTreeList.NodeEventArgs e) { for (int i = 0; i < node.Nodes.Count; i++) { string Inherit = node.Nodes[i].GetValue("Inherit").ToString(); if (Inherit == "False") { node.Nodes[i].CheckState = check; SetCheckedChildNodes(node.Nodes[i], check, e); } else if (Inherit == "True") { node.Nodes[i].CheckState = CheckState.Checked; SetCheckedChildNodes(node.Nodes[i], check, e); } } } #endregion 设置子节点状态 } }