FineUI 官方论坛
标题:
重复NodeID节点树的全选或全不选问题
[打印本页]
作者:
雏鸟
时间:
2014-2-13 23:39
标题:
重复NodeID节点树的全选或全不选问题
本帖最后由 雏鸟 于 2014-2-13 23:41 编辑
我有一树,可能分多层,但同一层下的节点NodeID不可能相同,不同层下的节点NodeID有重复的,如何实现全选或全不选。树的XML文件如下
<?xml version="1.0" encoding="utf-8" ?>
<Tree >
<TreeNode Text="水情" Expanded="true" NodeID="ZZ" EnableCheckBox="true" EnablePostBack="true" AutoPostBack="true" >
<TreeNode Text="吉首市" Expanded="true" NodeID="吉首市_Z5" EnableCheckBox="true" EnablePostBack="true" AutoPostBack="true" >
<TreeNode Text="河溪" NodeID="613H0000" ToolTip="Zu" EnableCheckBox="true" EnablePostBack="true" Expanded="true" AutoPostBack="true" />
<TreeNode Text="狮子庵" NodeID="613H0001" ToolTip="Zu" EnableCheckBox="true" EnablePostBack="true" Expanded="true" AutoPostBack="true" />
</TreeNode>
<TreeNode Text="保靖县" Expanded="true" NodeID="保靖县_Z10" EnableCheckBox="true" EnablePostBack="true" AutoPostBack="true" >
<TreeNode Text="泗溪站" NodeID="BJH00001" ToolTip="Zu" EnableCheckBox="true" EnablePostBack="true" Expanded="true" AutoPostBack="true" />
<TreeNode Text="县城酉水河站" NodeID="BJH00002" ToolTip="Zu" EnableCheckBox="true" EnablePostBack="true" Expanded="true" AutoPostBack="true" />
</TreeNode>
</TreeNode>
<TreeNode Text="雨情" Expanded="true" NodeID="PP" EnableCheckBox="true" EnablePostBack="true" AutoPostBack="true" >
<TreeNode Text="保靖县" Expanded="true" NodeID="保靖县_P37" EnableCheckBox="true" EnablePostBack="true" AutoPostBack="true" >
<TreeNode Text="泗溪站" NodeID="BJH00001" ToolTip="P" EnableCheckBox="true" EnablePostBack="true" Expanded="true" AutoPostBack="true" />
<TreeNode Text="水田河站" NodeID="BJH00002" ToolTip="P" EnableCheckBox="true" EnablePostBack="true" Expanded="true" AutoPostBack="true" />
</TreeNode>
<TreeNode Text="古丈县" Expanded="true" NodeID="古丈县_P42" EnableCheckBox="true" EnablePostBack="true" AutoPostBack="true" >
<TreeNode Text="县水务局" NodeID="613H4019" ToolTip="P" EnableCheckBox="true" EnablePostBack="true" Expanded="true" AutoPostBack="true" IconUrl="~/ShImages/Pstation.ico"/>
<TreeNode Text="断龙" NodeID="613H4020" ToolTip="P" EnableCheckBox="true" EnablePostBack="true" Expanded="true" AutoPostBack="true" />
</TreeNode>
</TreeNode>
</Tree>
树的NodeCheck后台事件:
protected void Tree1_NodeCheck(object sender, TreeCheckEventArgs e)
{
if (e.Checked)
{
this.ddlDeltaT.Items.Clear();
// this.Tree1.CheckAllNodes(e.Node.Nodes);
Checked_TreeNode(e.Node.Nodes);
Boolean isZZ = false;
Boolean isPP = false;
foreach (FineUI.TreeNode node in e.Node.Nodes)
{
if (node.ToolTip.Trim().IndexOf("Z") > -1 || node.ToolTip.Trim().IndexOf("z") > -1 || e.Node.Text == "水情")
{
isZZ = true;
isPP = false;
}
if (node.ToolTip.Trim().IndexOf("P") > -1 || node.ToolTip.Trim().IndexOf("p") > -1 || e.Node.Text == "雨情")
{
isPP = true;
isZZ = false;
}
}
if (isZZ == true)
{
foreach (FineUI.TreeNode node in this.Tree1.Nodes)
{
if (node.Text == "雨情" || node.NodeID.ToString() == "PP" || node.NodeID.ToString() == "pp")
{
node.Checked = false;
// this.Tree1.UncheckAllNodes(node.Nodes);
unCheck_TreeNode(node.Nodes);
}
}
}
if (isPP == true)
{
foreach (FineUI.TreeNode node in this.Tree1.Nodes)
{
if (node.Text == "水情" || node.NodeID.ToString() == "ZZ" || node.NodeID.ToString() == "zz")
{
node.Checked = false;
// this.Tree1.UncheckAllNodes(node.Nodes);
unCheck_TreeNode(node.Nodes);
}
}
}
}
else
{
// this.Tree1.UncheckAllNodes(e.Node.Nodes);
unCheck_TreeNode(e.Node.Nodes);
}
}
if (isPP == true)
{
//foreach (FineUI.TreeNode node in this.Tree1.Nodes)
//{
// if (node.Text == "水情" || node.NodeID.ToString() == "ZZ" || node.NodeID.ToString() == "zz")
// {
// node.Checked = false;
// // this.Tree1.UncheckAllNodes(node.Nodes);
// // unCheck_TreeNode(node.Nodes);
// }
//}
}
else
{
// this.Tree1.UncheckAllNodes(e.Node.Nodes);
// unCheck_TreeNode(e.Node.Nodes);
}
}
}
树的全选和全不选事件
private void unCheck_TreeNode(FineUI.TreeNodeCollection xNodes)
{
foreach (FineUI.TreeNode iNode in xNodes)
{
iNode.Checked = false;
if (iNode.Leaf)
{
iNode.Checked = false;
}
if (iNode.Nodes.Count > 0)
{
unCheck_TreeNode(iNode.Nodes);
}
}
}
private void Checked_TreeNode(FineUI.TreeNodeCollection xNodes)
{
foreach (FineUI.TreeNode iNode in xNodes)
{
iNode.Checked = true;
if (iNode.Leaf)
{
iNode.Checked = true;
}
if (iNode.Nodes.Count > 0)
{
Checked_TreeNode(iNode.Nodes);
}
}
}
我希望达到的效果:
1、选择水情节点下的任何子节点时,雨情节点全不选,不管NodeID ;反之亦然;
2、选择具有子节点的节点时选中该节点和所有子节点;取消具有子节点的节点选中时取消该节点的所有子节点全不选;
代码出现的问题:
1、全选雨情节点时可以全不选水情的所有子节点,取消雨情节点全选中时,水情节点中与雨情节点中相同NodeID的节点被选中;
2、全选水情节点时,取消了雨情节点中所有的选中(正确效果)
作者:
sanshi
时间:
2014-2-14 10:22
NodeID 不能有重复的
作者:
雏鸟
时间:
2014-2-14 13:35
看来我只有从NodeID处理了,人为截取规定的编码,相同编码的就加标识位
欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/)
Powered by Discuz! X3.4