关于TreeView的奇怪问题,新手求指导
小弟在做下列这个treeview操作时,发现一个很奇怪的问题,选择根节点或二级节点都没问题,但是选择三级节点下列图片上的【222】节点出现问题了,触发不了select事件,调试过程发现点击【222】选中的竟然是【321】,求高人指点,不胜感激!!--------------------编程问答-------------------- --------------------编程问答-------------------- 显然是节点的编号乱了,去数据库中看看查询一下暑假看看就知道了。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new sqlHelper().UserList();
this.ViewState["dt"] = dt;
AddTree(0, (TreeNode)null);
}
}
//递归添加树的节点
public void AddTree(int ParentID, TreeNode pNode)
{
DataTable dt = (DataTable)this.ViewState["dt"];
DataView dvTree = new DataView(dt);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[User_ID_other] = " + ParentID;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{
//添加根节点
double xingji =double.Parse(Row["xingji"].ToString());
string datetime = Row["dt"].ToString();
Node.Text = Row["UserName"].ToString() ;
Node.Value = xingji.ToString();
TreeView1.Nodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row["User_ID"].ToString()), Node); //再次递归
}
else
{
//添加当前节点的子节点
double xingji = double.Parse(Row["xingji"].ToString());
string datetime = Row["dt"].ToString();
Node.Text = Row["UserName"].ToString();
Node.Value = xingji.ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row["User_ID"].ToString()), Node); //再次递归
}
}
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
TreeNode tn = new TreeNode();
tn = TreeView1.SelectedNode;
Response.Write(getChildren(TreeView1.SelectedNode));
}
protected string getChildren(TreeNode currTreeNode)
{
string rv = "";
int i = 0;
if (currTreeNode.ChildNodes.Count > 0)
{
for (i = 0; i < currTreeNode.ChildNodes.Count; i++)
{
rv += currTreeNode.ChildNodes[i].Value + ",";
if (currTreeNode.ChildNodes[i].ChildNodes.Count > 0)
{
rv += getChildren(currTreeNode.ChildNodes[i]);
}
}
}
return rv;
}
建议删除所有的节点,然后添加下断点测试一下应该问题很快就可以找出来的。 --------------------编程问答--------------------
补充:.NET技术 , ASP.NET