TreeView遍历获取子节点复选框选中的值(asp.net) treeviewasp.net遍历C# 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void GetAllNodeText(TreeNodeCollection tnc,ref string str){foreach (TreeNode node in tnc){if (node.Checked == true){str += node.Text + ",";GetAllNodeText(node.ChildNodes,ref str);//Response.Write(node.Text + " ");}} 为什么我这样写我只选择了工具名称c为什么会把工具名称b和工具名称a也录入进去呢?我用你这个方法可以么???@save4me 求帮忙呀,我这里该怎么修改才能录入我选中的子节点的值呢? public void InserGJ() { if (this.TreeView1.CheckedNodes.Count > 0) { try { string delId = ""; D_CourseWareManage d = new D_CourseWareManage(); if (Request.QueryString["id"] != null && Request.QueryString["id"] != "") { string id= Request.QueryString["id"].ToString(); foreach (TreeNode t in TreeView1.CheckedNodes) { foreach (TreeNode item in t.ChildNodes) { delId += item.Value + ","; } } //去掉最后一个, delId = (delId + ")").Replace(",)", ""); string[] spl = delId.Split(','); for (int i = 0; i < spl.Length; i++) { d.InserToolDistributionCourse(spl[i], id); } } } catch (Exception err) { ScriptManager.RegisterStartupScript(this, GetType(), "JS", "alert('" + err.Message + "')", true); } } } 你看一下这样可不可以private void GetAllNodeText(TreeNodeCollection tnc,ref string str){ foreach (TreeNode node in tnc) { if (node.Checked == true) { str += node.Text + ","; GetAllNodeText(node.ChildNodes,ref str); //Response.Write(node.Text + " "); } }}public void InserGJ(){ if (this.TreeView1.CheckedNodes.Count > 0) { try { string delId = ""; D_CourseWareManage d = new D_CourseWareManage(); if (Request.QueryString["id"] != null && Request.QueryString["id"] != "") { string id= Request.QueryString["id"].ToString(); GetAllNodeText(TreeView1.CheckedNodes,ref delId) //foreach (TreeNode t in TreeView1.CheckedNodes) //{ // foreach (TreeNode item in t.ChildNodes) // { // delId += item.Value + ","; // } //} //去掉最后一个, delId = (delId + ")").Replace(",)", ""); string[] spl = delId.Split(','); for (int i = 0; i < spl.Length; i++) { d.InserToolDistributionCourse(spl[i], id); } } } catch (Exception err) { ScriptManager.RegisterStartupScript(this, GetType(), "JS", "alert('" + err.Message + "')", true); } }} 不行呢,我用了你这个方法之后,我选中的是工具名称a结果录入了两个工具名称a和工具名称c是什么原因呀???@save4me 我调试了一下好像是把工具类型一1的value也给录入进去了,因为工具类型一1的value值为1而工具名称c的value值也为1所以就出现了工具名称c和工具名称a,而我只选择了一个工具名称a呀这是什么原因呀求解呀??? foreach (TreeNode t in TreeView1.CheckedNodes) { if (t.Value != null && t.Value.Length > 0 && MyClass.IsNumber(t.Value)) { xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx } }写了一个简单的代码,经过测试,可以实现,只需要赋值即可,父节点值为string类型,子节点为整型int,遍历所有节点。当然,你也可以protected string getParent(TreeNode currTreeNode) { string rv = ""; if (currTreeNode.Parent != null) { rv = currTreeNode.Parent.Text; rv += getParent(currTreeNode.Parent); } return rv; }通过获取它的父节点来判断,方法很多。 请问一下,你是怎么做到treeview支持多选的。。 我怎么不能多选呢。。? 像coolite那样打开多个页面 PPT如何显示在ASP.NET页面上 设计方案 xml操作出错 在用户注册的时候检查用户输入到textbox1的用户名是否已经存在,应该怎么做?需要用到哪些控件?(我用的是vs2005,access数据库) 几个问题 有实力的进~~~~~~~~~~~~~~~ 空间的Tab顺序如何修改? 我在母版页添加的login控件,在下一级目录下引用母版页不显示 深圳哪些招ASP.NET程序员呢? 如何知道TREEVIEW的节点是父节点还是子节点。 使用SqlCommand中ExecuteNonQuery方法删除数据库中多行记录问题
{
foreach (TreeNode node in tnc)
{
if (node.Checked == true)
{
str += node.Text + ",";
GetAllNodeText(node.ChildNodes,ref str);
//Response.Write(node.Text + " ");
}
}
public void InserGJ()
{
if (this.TreeView1.CheckedNodes.Count > 0)
{
try
{
string delId = ""; D_CourseWareManage d = new D_CourseWareManage();
if (Request.QueryString["id"] != null && Request.QueryString["id"] != "")
{
string id= Request.QueryString["id"].ToString();
foreach (TreeNode t in TreeView1.CheckedNodes)
{
foreach (TreeNode item in t.ChildNodes)
{
delId += item.Value + ",";
}
}
//去掉最后一个,
delId = (delId + ")").Replace(",)", "");
string[] spl = delId.Split(',');
for (int i = 0; i < spl.Length; i++)
{
d.InserToolDistributionCourse(spl[i], id);
}
}
}
catch (Exception err)
{
ScriptManager.RegisterStartupScript(this, GetType(), "JS", "alert('" + err.Message + "')", true);
}
}
}
private void GetAllNodeText(TreeNodeCollection tnc,ref string str)
{
foreach (TreeNode node in tnc)
{
if (node.Checked == true)
{
str += node.Text + ",";
GetAllNodeText(node.ChildNodes,ref str);
//Response.Write(node.Text + " ");
}
}
}public void InserGJ()
{
if (this.TreeView1.CheckedNodes.Count > 0)
{
try
{
string delId = ""; D_CourseWareManage d = new D_CourseWareManage();
if (Request.QueryString["id"] != null && Request.QueryString["id"] != "")
{
string id= Request.QueryString["id"].ToString();
GetAllNodeText(TreeView1.CheckedNodes,ref delId)
//foreach (TreeNode t in TreeView1.CheckedNodes)
//{
// foreach (TreeNode item in t.ChildNodes)
// {
// delId += item.Value + ",";
// }
//}
//去掉最后一个,
delId = (delId + ")").Replace(",)", "");
string[] spl = delId.Split(',');
for (int i = 0; i < spl.Length; i++)
{
d.InserToolDistributionCourse(spl[i], id);
}
}
}
catch (Exception err)
{
ScriptManager.RegisterStartupScript(this, GetType(), "JS", "alert('" + err.Message + "')", true);
}
}
}
{
if (t.Value != null && t.Value.Length > 0 && MyClass.IsNumber(t.Value))
{
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}
}
写了一个简单的代码,经过测试,可以实现,只需要赋值即可,父节点值为string类型,子节点为整型int,遍历所有节点。当然,你也可以
protected string getParent(TreeNode currTreeNode)
{
string rv = "";
if (currTreeNode.Parent != null)
{
rv = currTreeNode.Parent.Text;
rv += getParent(currTreeNode.Parent);
} return rv;
}
通过获取它的父节点来判断,方法很多。
我怎么不能多选呢。。?