用showModalDialog打开的窗口A有一个名为:tvItem的treeview  ,并且传有参数给窗口A,现在我利用传递给窗口A的参数来初始化该treeview,可是回填选中提交后,隐藏域的hidValue却得不到选中的节点,我观察后发现,选中节点时,隐藏域hidValue得到的值很乱。如果没有利用窗口传递来的参数初始化treeview的话,选中节点时,hidValue的值就正常,这是怎么回事啊?
<!--
//treeview的使用
function tree_oncheck(tree)
{
var i;
    //得到当前点击的节点
var node=tree.getTreeNode(tree.clickedNodeIndex); node.

var ParentNode = node.getParent();
while (ParentNode != null) //如果当前节点有父节点
{
if(tree.getTreeNode(tree.clickedNodeIndex).getAttribute("Checked"))
{
    //如果当前节点是打勾,则其所有的父节点都打勾
ParentNode.setAttribute("Checked", "true");
tree.queueEvent('oncheck',ParentNode.getNodeIndex());

}
else
{
ParentNode.setAttribute("Checked", "false");//如果当前节点没有被选中,则其所有的父节点都不选中
tree.queueEvent('oncheck',ParentNode.getNodeIndex());

var BrotherNodes = new Array();
BrotherNodes = ParentNode.getChildren();
for (i = 0; i < BrotherNodes.length; i ++)
{
//如果其兄弟节点有打勾的,则其父节点也打勾(选中)
if (BrotherNodes[i].getAttribute("Checked")) 
{
ParentNode.setAttribute("Checked", "true");
tree.queueEvent('oncheck',ParentNode.getNodeIndex());
//
break;
}
}
}
ParentNode = ParentNode.getParent();//得到父节点
}

//控制子节点
setcheck(node,tree);



FindCheckedFromTree(tree);//将treeview的状态写到隐藏域hidValue中去

//InitCheck(tree) }

//从根节点到子节点来控制checkbox
function setcheck(node,tree)
{
var i;
var ChildNode=new Array();
ChildNode=node.getChildren();
if(parseInt(ChildNode.length)==0)
return;
else
{
for(i=0;i<ChildNode.length;i++)
{
var cNode;
cNode=ChildNode[i];
//将当前节点checkbox的状态设置与其顶层父节点checkbox的状态一致
cNode.setAttribute("Checked",tree.getTreeNode(tree.clickedNodeIndex).getAttribute("Checked"));
//tree.queueEvent('oncheck',tree.clickedNodeIndex);

if(parseInt(cNode.getChildren().length)!=0)//如果存在子节点
setcheck(cNode,tree);//递归
}
}
}

//判断是否需要将checkbox选中。
//本操作是从隐藏域hidValue中读取数据来反填checkbox
function IsChecked(node)
{
var i;
var check=new Array();
if(window.dialogArguments == "")
{
//check=document.Form1.hidValue.value.split(",");//切分hidValue的值
check = window.dialogArguments;
}
else
{
check = window.dialogArguments;

}

   
for(i=0;i<check.length;i++)
{
if(check[i]==node.getAttribute("NodeData"))
{
return true;
}
}
return false;
}

//初始化
//主要也是根据隐藏域hidValue的值来初始化treeview
function InitCheck(tree)
{
document.Form1.hidValue.value = window.dialogArguments;
return;

   
if((document.Form1.hidValue.value!="") || (window.dialogArguments != ""))
{
if(window.dialogArguments != "")
{
//document.Form1.hidValue.value = window.dialogArguments;
document.Form1.vvv.value = window.dialogArguments;
}
var i;
var ChildNode=new Array();
ChildNode=tree.getChildren();
if(parseInt(ChildNode.length)==0)
return;
else
{
for(i=0;i<ChildNode.length;i++)
{
var cNode;
cNode=ChildNode[i];
cNode.setAttribute("Checked",IsChecked(cNode));

//tree.queueEvent('oncheck',cNode.getNodeIndex());

if(parseInt(cNode.getChildren().length)!=0)
InitCheck(cNode);//递归
}
}
}
}

function FindCheckedFromTree(tree)
{
document.Form1.hidValue.value = "";
//alert("FindCheckedFromTree(tree)" + document.Form1.hidValue.value);
FindCheckedFromNode(tree);
} //从一个节点寻找其中所有被选中节点(递归)
function FindCheckedFromNode(node) 
{
var i = 0;
var nodes = new Array();
nodes = node.getChildren();

for (i = 0; i < nodes.length; i++) 
{
var cNode;
cNode=nodes[i];
//alert(cNode.getAttribute("NodeData") + " -" + cNode.getAttribute("Checked"));
if (cNode.getAttribute("Checked"))
{
 // alert(cNode.getAttribute("NodeData") + " -" + cNode.getAttribute("Checked"));

AddChecked(cNode);
}

if (parseInt(cNode.getChildren().length) != 0 ) 
{
FindCheckedFromNode(cNode);
}
}
document.Form1.vvv.value = document.Form1.hidValue.value;
}
function AddChecked(node) 
{
if(document.Form1.hidValue.value=="")
{
document.Form1.hidValue.value += node.getAttribute("NodeData");
}
else
{
document.Form1.hidValue.value += ","+node.getAttribute("NodeData");
}
document.Form1.vvv.value = document.Form1.hidValue.value;
}
-->