写了个遍历树的脚本,可服务器端获取不到节点状态,这是啥原因?

sportdog 2004-09-06 10:18:10
写了个遍历树的脚本,可服务器端获取不到节点状态,这是啥原因?

遍历树的脚本实现的功能为:选中父节点,所有子节点选中
选中子节点,节点的父节点及父节点的父节点....选中.

现在前台已经没问题了.
TreeNodeCollection tnc ;
if(node == null)
{
tnc = TreeViewAuth.Nodes;
}
else
{
tnc = node.Nodes;
}

foreach(TreeNode tn in tnc)
{
//节点对应的行
bool orgMark = bool.Parse(tn.NodeData.Split(',')[0]);
int funID = int.Parse(tn.NodeData.Split(',')[1]);

//授权
if(!orgMark && tn.Checked)
{
DataRow row = dsAuth.Tables[0].NewRow();
row["AUTH_USER_CODE"] = userCode;
row["AUTH_FUN_ID"] = funID;
row["AUTH_ACCEPT"] = true;
dsAuth.Tables[0].Rows.Add(row);
}


我现在把所有节点都选中了tn.Checked还等于false;
我把在pageload中加载脚本的代码去掉就可以获取到了
this.TreeViewAuth.Attributes.Add("oncheck","tree_oncheck(this)");

有谁碰过这问题吗?
...全文
154 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yichuan1982 2004-09-06
  • 打赏
  • 举报
回复
up
sniper81 2004-09-06
  • 打赏
  • 举报
回复
/// <summary>
/// 获取单个节点中的所有选中的子节点
/// </summary>
/// <param name="parentNode"></param>
protected void GetCheckedTreeNode(TreeNode parentNode)
{
foreach (TreeNode node in parentNode.Nodes)
{
if (node.Checked)
{
TreeNode cloneNode=node.Clone() as TreeNode;
checkedTreeNodes.Add(cloneNode);
}
GetCheckedTreeNode(node);
}
}
/// <summary>
/// 获取所有CheckBox中选中的节点
/// </summary>
/// <returns></returns>
public TreeNodeCollection GetCheckedTreeNodes()
{
checkedTreeNodes=new TreeNodeCollection();
if (this.Nodes[0].Checked)
{
TreeNode node=this.Nodes[0].Clone() as TreeNode;
checkedTreeNodes.Add(node);
}
GetCheckedTreeNode(this.Nodes[0]); //递归获取选中的节点
return checkedTreeNodes;
}
不要意思,上面的回复贴的不全,因为我继承TreeView类写了自己的类,把一些操作封装起来用,所以时间长了,自己写的东西都不太清楚了。
上面2个函数用来获取所有选中的节点,this就是TreeView对象本身。
那个GetCheckedTreeNodesIDs(string sep,string dataType)函数名字不大对,原本只是为了取ID的,后来又需要取别的内容,加上时间紧,所以就名不副实了~
sniper81 2004-09-06
  • 打赏
  • 举报
回复
/// <summary>
/// 获取所有选中的节点的NodeID组合字符串
/// </summary>
/// <param name="sep">分隔符</param>
/// <param name="DataType">获取数据的种类</param>
public string GetCheckedTreeNodesIDs(string sep,string dataType)
{
System.Text.StringBuilder sb=new System.Text.StringBuilder(600);
TreeNodeCollection tc=GetCheckedTreeNodes(); //获取所有选中的节点的集合
foreach (TreeNode node in tc)
{
sb.Append(sep);
switch (dataType)
{
case "ID":
sb.Append(node.ID);
break;
case "NodeData":
sb.Append(node.NodeData);
break;
case "Text":
sb.Append(node.Text);
break;
}
}
if (sb.Length>0)
sb=sb.Remove(0,1);
return sb.ToString();
}
sniper81 2004-09-06
  • 打赏
  • 举报
回复
public TreeNodeCollection GetCheckedTreeNodes()
{
checkedTreeNodes=new TreeNodeCollection();
if (this.Nodes[0].Checked)
{
TreeNode node=this.Nodes[0].Clone() as TreeNode;
checkedTreeNodes.Add(node);
}
GetCheckedTreeNode(this.Nodes[0]); //递归获取选中的节点
return checkedTreeNodes;
}

上面是我写的函数,this就是TreeView对象
sportdog 2004-09-06
  • 打赏
  • 举报
回复
没人知道吗?
难道用js代码让checkbox选中和直接用鼠标点中不同?
sportdog 2004-09-06
  • 打赏
  • 举报
回复
这是对树加载一javascript tree_oncheck(tree)函数
leisang 2004-09-06
  • 打赏
  • 举报
回复
this.TreeViewAuth.Attributes.Add("oncheck","tree_oncheck(this)");
这句执行什么操作?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧