From 0e54c48e8190937f5b483c79e3cc9d17ec7c9af0 Mon Sep 17 00:00:00 2001 From: duheng <2784771470@qq.com> Date: 星期五, 27 九月 2024 15:45:37 +0800 Subject: [PATCH] 提交自动匹配界面优化 --- WinFrmUI/HStation.WinFrmUI.Basic/01-SysCatalogManage/SetSysPropForCatalogDlg.cs | 146 ++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 114 insertions(+), 32 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Basic/01-SysCatalogManage/SetSysPropForCatalogDlg.cs b/WinFrmUI/HStation.WinFrmUI.Basic/01-SysCatalogManage/SetSysPropForCatalogDlg.cs index 4151139..f7907e2 100644 --- a/WinFrmUI/HStation.WinFrmUI.Basic/01-SysCatalogManage/SetSysPropForCatalogDlg.cs +++ b/WinFrmUI/HStation.WinFrmUI.Basic/01-SysCatalogManage/SetSysPropForCatalogDlg.cs @@ -1,17 +1,19 @@ -锘縰sing DevExpress.DataAccess.Wizard.Model; +锘縰sing DevExpress.CodeParser; +using DevExpress.DataAccess.Wizard.Model; using DevExpress.XtraEditors; +using System; using Yw.Dto; namespace HStation.WinFrmUI.Basic { - public partial class SetSysPropForCatalogDlg : Form + public partial class SetSysPropForCatalogDlg : DevExpress.XtraEditors.XtraForm { public SetSysPropForCatalogDlg() { InitializeComponent(); - this.gridView1.Columns["GroupName"].Group(); repositoryItemCheckedComboBoxEdit1.DisplayMember = "Name"; - repositoryItemCheckedComboBoxEdit1.ValueMember = "ID"; + repositoryItemCheckedComboBoxEdit1.ValueMember = "Name"; + this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon; } private List<SysPropMappingViewModel> _allBindingList = new List<SysPropMappingViewModel>(); @@ -28,7 +30,11 @@ 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) @@ -36,6 +42,7 @@ 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; @@ -43,14 +50,16 @@ model.UnitName = child.UnitName; model.Inherit = child.Inherit; model.ChoiceList = child.ChoiceList; - // model.DisplayChoice = ; - // model.ChoiceIds = 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.gridView1.ExpandAllGroups(); + this.treeList1.ExpandAll(); } // 瀹屾垚 @@ -83,9 +92,47 @@ this.Close(); } - private void gridView1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e) + private void repositoryItemCheckedComboBoxEdit1_EditValueChanged(object sender, EventArgs e) { - var vm = this.gridView1.GetCurrentViewModel(_allBindingList); + 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<long> longs = parts.Select(part => long.Parse(part.Trim())).ToList(); + + vm.ChoiceIds = longs; + } + else + { + if (long.TryParse(strList, out long Id)) + { + List<long> choiceId = new List<long>(); + choiceId.Add(Id); + vm.ChoiceIds = choiceId; + } + } + } + else + { + vm.ChoiceIds = new List<long>(); + } + } + catch (Exception ex) + { + } + } + + private void treeList1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e) + { + var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { return; @@ -94,44 +141,79 @@ { e.Cancel = true; } - if (gridView1.FocusedColumn.Name == "gridColumn1") + if (vm.IsGroup) + { + e.Cancel = true; + } + if (treeList1.FocusedColumn.Name == "colPropChoice") { repositoryItemCheckedComboBoxEdit1.Items.Clear(); repositoryItemCheckedComboBoxEdit1.DataSource = vm.ChoiceList; - // repositoryItemCheckedComboBoxEdit1.edit } } - private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) + private void treeList1_CustomDrawNodeCell(object sender, DevExpress.XtraTreeList.CustomDrawNodeCellEventArgs e) { - var gridView = sender as DevExpress.XtraGrid.Views.Grid.GridView; - if (gridView != null) + if (e.Node != null) { - foreach (var item in _allBindingList) + string Inherit = e.Node.GetValue("Inherit").ToString(); + string isGroup = e.Node.GetValue("IsGroup").ToString(); + if (Inherit == "True") { - int index = _allBindingList.IndexOf(item); - if (gridView.GetRowHandle(index) == e.RowHandle) - { - if (item.Inherit) - { - e.Appearance.BackColor = Color.Gray; - } - break; - } + e.Appearance.BackColor = Color.DarkGray; + } + if (isGroup == "True") + { + e.Appearance.BackColor = Color.Gainsboro; } } } - private void repositoryItemCheckedComboBoxEdit1_EditValueChanged(object sender, EventArgs e) + private void treeList1_BeforeCheckNode(object sender, DevExpress.XtraTreeList.CheckNodeEventArgs e) { - var allselectList = repositoryItemCheckedComboBoxEdit1.GetCheckedItems(); - string[] parts = Convert.ToString(allselectList).Split(','); - List<long> longs = parts.Select(part => long.Parse(part.Trim())).ToList(); - var vm = this.gridView1.GetCurrentViewModel(_allBindingList); - if (vm != null) + string Inherit = e.Node.GetValue("Inherit").ToString(); + if (Inherit == "True") { - vm.ChoiceIds = longs; + 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 璁剧疆瀛愯妭鐐圭姸鎬� } } \ No newline at end of file -- Gitblit v1.9.3