17,740
社区成员
发帖
与我相关
我的任务
分享
void CustomerFullSDODCForm_OnSaveBatchCargo(object sender, E2ETEventArgs<DataCollection<CargoFullSDO>> e)
{
DataCollection<CargoFullSDO> cargos = e.Data;
//修改后的集合
foreach (CargoFullSDO var in cargos)
{
//找到父节点,
TreeNode parentNode = FindCategoryNode(treeView_Cargo, var);
if (parentNode != null)
{
TreeNode categoryNode = FindCargoCategory(parentNode, var);
//父结点下所有子结点
TreeNode currentNode = FindNode(parentNode, var);
if (categoryNode== null)
{
//新增的
if (currentNode == null)
{
TreeNode node = new TreeNode();
node.Text = var.CargoName;
node.Tag = var;
parentNode.Nodes.Add(node);
}
//原先或修改的
else
{
currentNode.Text = var.CargoName;
currentNode.Tag = var;
}
}
else
{
//新增的
if (currentNode == null)
{
TreeNode node = new TreeNode();
node.Text = var.CargoName;
node.Tag = var;
parentNode.Nodes.Add(node);
}
//原先或修改的
else
{
currentNode.Text = var.CargoName;
currentNode.Tag = var;
//这里是修改后的节点.如果此时修改了它的类型.它就已经移到另个类别下去了
现在我要把本来这个节点给删除..(因为要求不能让treeview刷新,所以才能删除来实现同步如果刷新一遍的话它在这个类别下面其实不存在的)
}
}
}
}
}
void CustomerFullSDODCForm_OnSaveBatchCargo(object sender, E2ETEventArgs<DataCollection<CargoFullSDO>> e)
{
DataCollection<CargoFullSDO> cargos = e.Data;
//修改后的集合
foreach (CargoFullSDO var in cargos)
{
//找到父节点,
TreeNode parentNode = FindCategoryNode(treeView_Cargo, var);
if (parentNode != null)
{
//父结点下所有子结点
TreeNode currentNode = FindNode(parentNode, var);
//新增的或者修改类别的
if (currentNode == null)
{
//去掉旧结点
TreeNode oleNode = FindCargoOleNode(treeView_Cargo, var);
if (oleNode != null)
{
oleNode.Remove();
}
//增加新结点
TreeNode node = new TreeNode();
node.Text = var.CargoName;
node.Tag = var;
parentNode.Nodes.Add(node);
}
//原先或修改其它的
else
{
currentNode.Text = var.CargoName;
currentNode.Tag = var;
}
}
}
}
//根据修改货物的ID查找原来的结点
TreeNode FindCargoOleNode(TreeView view, CargoFullSDO cargo)
{
TreeNode cargoNode = null;
TreeNodeCollection nodes = view.Nodes;
foreach (TreeNode var in nodes)
{
CargoFullSDO oleNode = null;
TreeNodeCollection cNodes = var.Nodes;
foreach (TreeNode temp in cNodes)
{
if (temp.Tag is CargoFullSDO)
{
oleNode = temp.Tag as CargoFullSDO;
if (cargo.CargoId == oleNode.CargoId)
{
cargoNode = temp;
break;
}
}
}
}
return cargoNode;
}