写了个遍历树的脚本,可服务器端获取不到节点状态,这是啥原因?遍历树的脚本实现的功能为:选中父节点,所有子节点选中
选中子节点,节点的父节点及父节点的父节点....选中.现在前台已经没问题了.
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)");有谁碰过这问题吗?
选中子节点,节点的父节点及父节点的父节点....选中.现在前台已经没问题了.
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)");有谁碰过这问题吗?
解决方案 »
- 如何随机生成2-20字符长度的用户名?
- 基础问题 希望得到清晰解答
- 求教:使用OracleClient执行事务的问题!
- 先安装Microsoft Visual Studio .NET 2003 再安装 Microsoft Visual InterDev 6.0 在InterDev 6.0中不能新建项目怎么办?
- 关于dataGrid中实现全选,反选,不选操作,还请孟子等高人看一下
- 求一个只有省市的数据库,大家如果有的话请发到我的邮箱,谢谢。
- 讨论:禁止用户二次登录的一个解决方法
- 高分请教——如何限制登陆用户数?
- 如何定义treeview右键菜单,急!!!
- 怎么取的datagrid表格里的内容然后根据其内容判断更换自己的内容
- 如何把一个dategrid清空,让其不绑定数据?
- 急急急!!!为什么我向水晶报表中传递参数总是无法传入???分不够可另开帖加分!
这句执行什么操作?
难道用js代码让checkbox选中和直接用鼠标点中不同?
{
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对象
/// 获取所有选中的节点的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();
}
/// 获取单个节点中的所有选中的子节点
/// </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的,后来又需要取别的内容,加上时间紧,所以就名不副实了~