From dd85ee6c48c67441fca2a67fc024828f104e0791 Mon Sep 17 00:00:00 2001 From: lu <123456> Date: 星期四, 18 九月 2025 16:18:46 +0800 Subject: [PATCH] bug --- DevApp/Gs.DevApp/UserControl/UcDictionarySelect.cs | 78 ++++++++++++++++++++++++++++---------- 1 files changed, 57 insertions(+), 21 deletions(-) diff --git a/DevApp/Gs.DevApp/UserControl/UcDictionarySelect.cs b/DevApp/Gs.DevApp/UserControl/UcDictionarySelect.cs index e0aefaa..5c20efc 100644 --- a/DevApp/Gs.DevApp/UserControl/UcDictionarySelect.cs +++ b/DevApp/Gs.DevApp/UserControl/UcDictionarySelect.cs @@ -6,7 +6,7 @@ using System; using System.Collections.Generic; using System.Data; -using System.Text; +using System.Drawing; using System.Windows.Forms; @@ -14,35 +14,52 @@ { public partial class UcDictionarySelect : DevExpress.XtraEditors.XtraForm { - private List<string> lstCheckedKeyID = new List<string>();//閫夋嫨灞�ID闆嗗悎 + private List<dynamic> lstCheckedKeyID = new List<dynamic>();//閫夋嫨闆嗗悎 string strTitle = ""; string strWhere = ""; - public UcDictionarySelect(string _strTitle, string _strWhere) + public UcDictionarySelect(string _strTitle, string _strWhere, string _strMsg = "") { InitializeComponent(); - tlMenu.CustomDrawNodeCheckBox += TreeList1_CustomDrawNodeCheckBox; - getTree(); - tlMenu.OptionsBehavior.Editable = true; - tlMenu.OptionsSelection.EnableAppearanceFocusedCell = false; - tlMenu.OptionsSelection.MultiSelect = true; - tlMenu.OptionsSelection.MultiSelectMode = TreeListMultiSelectMode.CellSelect; + + lbMsg.Text = _strMsg; this.strTitle = _strTitle; this.strWhere = _strWhere; this.Text = _strTitle; + tlMenu.MouseDown += (s, e) => + { + TreeListHitInfo hitInfo = tlMenu.CalcHitInfo(new Point(e.X, e.Y)); + if (hitInfo.HitInfoType == HitInfoType.Cell) + { + TreeListNode node = hitInfo.Node; + if (node != null) + { + if (node.HasChildren) // 鍙湁褰撹妭鐐规湁瀛愯妭鐐规椂鎵嶈�冭檻灞曞紑鎴栨姌鍙� + { + if (node.Expanded) + node.Collapse(); + else + node.Expand(); + } + } + } + }; + getTree(); + tlMenu.CustomDrawNodeCheckBox += TreeList1_CustomDrawNodeCheckBox; + tlMenu.OptionsSelection.EnableAppearanceFocusedCell = false; btnIn.Click += (s, e) => { findOrigin(tlMenu); var list = new List<dynamic>(); - foreach (string key in lstCheckedKeyID) + foreach (dynamic key in lstCheckedKeyID) { list.Add(new { - // dicCode = "001", - dicTxt = key + dicCode = key.dicCode, + dicTxt = key.dicTxt }); - }; - UpdateParent?.Invoke(this, - new UpdateParentEventArgs { DynamicList = list }); + } + ; + UpdateParent?.Invoke(this, new UpdateParentEventArgs { DynamicList = list }); Close(); }; tlMenu.IndicatorWidth = 50; @@ -85,7 +102,8 @@ /// </summary> private void getTree() { - var pgq = new PageQueryModel(1, 999999, "a.defect_name"); + string _where = " and 1=1 and a.type1=1 and " + this.strWhere; + var pgq = new PageQueryModel(1, 999999, "a.defect_name", "asc", "", _where); var json = JsonConvert.SerializeObject(pgq); try { @@ -98,10 +116,11 @@ tlMenu.ParentFieldName = "pid"; tlMenu.Tag = "defectName"; tlMenu.EndUpdate(); - this.tlMenu.CollapseAll(); // tlMenu.OptionsBehavior.Editable = true; tlMenu.OptionsBehavior.AllowRecursiveNodeChecking = false; tlMenu.BestFitColumns(); + tlMenu.ExpandAll(); + tlMenu.CollapseAll(); } catch (Exception ex) { @@ -120,17 +139,36 @@ { if (parentNode.Nodes.Count == 0) { + if (parentNode.CheckState == CheckState.Checked) + { + DataRowView drv = tlMenu.GetDataRecordByNode(parentNode) as DataRowView;//鍏抽敭浠g爜锛屽氨鏄笉鐭ラ亾鏄繖鏍疯幏鍙栨暟鎹�岀籂缁撲簡寰堜箙(楝肩煡閬撳彲浠ヨ浆鎹负DataRowView鍟�) + if (drv != null) + { + string KeyFieldName = (string)drv["defectName"]; + string dicCode = (string)drv["defectCode"]; + lstCheckedKeyID.Add(new + { + dicCode = dicCode, + dicTxt = KeyFieldName + }); + } + } return;//閫掑綊缁堟 } foreach (TreeListNode node in parentNode.Nodes) { - if (node.CheckState == CheckState.Checked) + if (node.CheckState == CheckState.Checked && parentNode.Nodes.Count == 0) { DataRowView drv = tlMenu.GetDataRecordByNode(node) as DataRowView;//鍏抽敭浠g爜锛屽氨鏄笉鐭ラ亾鏄繖鏍疯幏鍙栨暟鎹�岀籂缁撲簡寰堜箙(楝肩煡閬撳彲浠ヨ浆鎹负DataRowView鍟�) if (drv != null) { string KeyFieldName = (string)drv["defectName"]; - lstCheckedKeyID.Add(KeyFieldName); + string dicCode = (string)drv["defectCode"]; + lstCheckedKeyID.Add(new + { + dicCode = dicCode, + dicTxt = KeyFieldName + }); } } GetCheckedKeyID(node); @@ -143,7 +181,6 @@ private void findOrigin(DevExpress.XtraTreeList.TreeList tree) { this.lstCheckedKeyID.Clear(); - if (tree.Nodes.Count > 0) { foreach (TreeListNode root in tree.Nodes) @@ -152,7 +189,6 @@ } } } - #endregion } } \ No newline at end of file -- Gitblit v1.9.3