DeviceManager/DeviceRepairAndOptimization/Pages/DriveInformation/pageRouteAssign.cs

115 lines
3.6 KiB
C#
Raw Normal View History

2024-06-02 16:38:52 +00:00
using DevExpress.XtraBars.ToolbarForm;
using DevExpress.XtraTreeList.Nodes;
using DeviceRepair.Models;
using DeviceRepairAndOptimization.Biz;
using DeviceRepairAndOptimization.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace DeviceRepairAndOptimization.Pages.DriveMaintenance
{
public partial class pageRouteAssign : ToolbarForm
{
public DeviceRouteInfo CurrentSelectModel = null;
List<DeviceRouteInfo> routes = null;
int CurrentRoute = 0;
public pageRouteAssign(int Route = 0)
{
InitializeComponent();
CurrentRoute = Route;
this.Load += PageRouteAssign_Load;
}
private void PageRouteAssign_Load(object sender, EventArgs e)
{
InitializeTreeDatas();
if (CurrentRoute != 0)
{
foreach (TreeListNode node in treeList1.Nodes)
{
SelectNodeByID(node, CurrentRoute);
}
}
}
private void SelectNodeByID(TreeListNode node, int targetID)
{
// 假设ID存储在节点的第一个列索引0
if (node.GetValue("AutoID")?.ToString() == targetID.ToString())
{
node.Checked = true;
return;
}
// 递归处理子节点
foreach (TreeListNode childNode in node.Nodes)
{
SelectNodeByID(childNode, targetID);
}
}
void InitializeTreeDatas()
{
try
{
APIResponseData apiResponseData = DeviceManager.Instance.GetDeviceRoute();
if (apiResponseData.Code != 1)
{
splashScreenManager1.CloseWaitForm();
XtraMessageBoxHelper.Error(apiResponseData.Message);
return;
}
routes = apiResponseData.ToDeserializeObject<List<DeviceRouteInfo>>();
treeList1.DataSource = routes;
treeList1.KeyFieldName = "AutoID";
treeList1.ParentFieldName = "ParentID";
treeList1.ExpandAll();
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
}
private void treeList1_CustomDrawNodeCheckBox(object sender, DevExpress.XtraTreeList.CustomDrawNodeCheckBoxEventArgs e)
{
if (e.Node.Level == 1)
{
e.Handled = true;
return;
}
}
private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
List<TreeListNode> treeListNodes = treeList1.GetAllCheckedNodes();
if ((treeListNodes?.Count ?? 0) > 0)
{
TreeListNode node = treeListNodes.FirstOrDefault();
CurrentSelectModel = routes.FirstOrDefault(x => x.AutoID == node.Id);
2024-06-03 17:21:11 +00:00
if (CurrentSelectModel == null)
{
XtraMessageBoxHelper.Warn("选中数据不能为空!");
return;
}
2024-06-02 16:38:52 +00:00
this.DialogResult = DialogResult.OK;
}
else
{
XtraMessageBoxHelper.Warn("选中数据不能为空!");
}
}
private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
{
treeList1.UncheckAll();
e.Node.Checked = true;
}
}
}