注册 登录
编程论坛 ASP.NET技术论坛

代码实现使TreeView控件某个节点处于选定状态的方法遇到的问题

foshan 发布于 2007-04-16 14:28, 1043 次点击

以下的代码想实现:使TreeView控件某个节点处于选定状态。FondNode方法有两个参数,一个是传递节点对象的,另外一个参数是传递节点的值(节点的值是唯一的)的。
运行到 if (tn.Value == MyCount) 时遇到如下错误提示:运算符“==”无法应用于“string”和“int”类型的操作数 。
请教大家应如何解决这个问题啊?谢谢!

protected void Page_Load(object sender, EventArgs e)
{
this.FondNode(TreeView1.Nodes,56);
this.FondNode(TreeView2.Nodes,23);
}

//查找节点
private void FondNode(TreeNodeCollection tnc,int MyCount)
{
foreach (TreeNode tn in tnc)
{
if (tn.Value == MyCount)
{
tn.Select();
this.ExpandNode(tn);
break;
}
else
this.FondNode(tn.ChildNodes,MyCount);
}
}

//打开节点
private void ExpandNode(TreeNode tn)
{
if (tn.Depth != 0)
{
this.ExpandNode(tn.Parent);
tn.Expand();
}
else
tn.Expand();
}

[此贴子已经被作者于2007-4-16 14:29:27编辑过]

4 回复
#2
Kendy1234562007-04-16 17:14

很明显 tn.value是是string类型的

正常情况下 系统会自动进行强制类型转换 如果可以的话. 但是如果tn.value是非数字的字符串 就会报错了
FondNode里 在 Foreach循环里面
在比较之前先判断一下节点的值是不是数字

#3
foshan2007-04-16 17:29
节点的值 肯定 是数字,因为 节点值就是 数据表的“ID”字段(主键,int 数据类型),而且是唯一的。在这种情况下,如何解决这个问题啊?
#4
Kendy1234562007-04-16 17:36
那在比较之前对 tn.value进行类型转换成数字试试
#5
sean882007-04-17 09:26
以下是引用foshan在2007-4-16 17:29:06的发言:
节点的值 肯定 是数字,因为 节点值就是 数据表的“ID”字段(主键,int 数据类型),而且是唯一的。在这种情况下,如何解决这个问题啊?

经过ID列绑定,你所看到的节点值是数字,但是treeNode.value取值是字符串类型的.和数字类型肯定不能相等呀.

1