private void InitTree2(TreeNodeCollection Nds,string parentId,int flag)
{
DataView dv=new DataView();

TreeNode tmpNd;
dv.Table=dsTree.Tables[0];
dv.RowFilter="ParentId='" + parentId + "'" ;

foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();

tmpNd.ID   = drv["ID"].ToString();
tmpNd.Text = "<INPUT type='checkbox' id='chkPlan' value='"+drv["ID"].ToString()+"' onclick='searchArea(this);'>"+drv["DName"].ToString();
                 tmpNd.NavigateUrl="DestLocalEdit.aspx?ID="+drv["ID"].ToString()+"&ParentID="+drv["ParentID"].ToString();

Nds.Add(tmpNd);
InitTree2(tmpNd.Nodes,tmpNd.ID,flag);
}
}
我在递归生成树的时候,在每个节点的前面填加一个checkbox控件并附值,可是用javascript无法找到checkbox啊?
   function searchArea(obj)
     {
                var objHidPlan=document.all["txtSearched"];
var objPlan=document.all["chkPlan"];
alert(objPlan);
var str="";
       
if(objPlan.length>0)
{
for(var i=0;i<objPlan.length;i++)
{
if(objPlan[i].checked)
{
str=str+objPlan[i].value+",";
}
}       
}
else
{
if(objPlan.checked)
{
str=objPlan.value+",";
}       
}
                    
alert(str);
     }
请问如何能取得checkbox的value值啊?

解决方案 »

  1.   

    function searchArea(objTreeCheckBox)
    {
    alert(objTreeCheckBox.value);
    }
    这不就行了吗?
      

  2.   

    如果你希望知道当前选中的是哪些节点,其实可以换个思路,
    首先在页面上方一个<INPUT id="Text1" type="hidden" name="Text1" runat="server" value=",">然后改写一下 searchArea :
    function searchArea(objTreeCheckBox)
    {
    var curID = objTreeCheckBox.value;
    var selected = document.getElementById("Text1").value;
    if(objTreeCheckBox.checked)
    selected += curID + ",";
    else
    selected = selected.replace(","+curID+",",",");

    document.getElementById("Text1").value = selected;
    }
    那么,无论是在javascript还是在后台C#代码中都可以随时获取目前选中的节点的value值
      

  3.   

    <script language="javascript">function public_GetParentByTagName(element, tagName) 
    {
        var parent = element.parentNode;
        var upperTagName = tagName.toUpperCase();
        //如果这个元素还不是想要的tag就继续上溯
        while (parent && (parent.tagName.toUpperCase() != upperTagName)) 
        {
            parent = parent.parentNode ? parent.parentNode : parent.parentElement;
        }
        return parent;
    }//设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问
    function setParentChecked(objNode)

        var objParentDiv = public_GetParentByTagName(objNode,"div");
        if(objParentDiv==null || objParentDiv == "undefined")
        {
            return;
        }
        var objID = objParentDiv.getAttribute("ID");
        objID = objID.substring(0,objID.indexOf("Nodes"));
        objID = objID+"CheckBox";
        var objParentCheckBox = document.getElementById(objID);
        if(objParentCheckBox==null || objParentCheckBox == "undefined")
        {
            return;
        } 
        if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox")
        return; 
        objParentCheckBox.checked = true;
        setParentChecked(objParentCheckBox);
    }//设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问
    function setChildUnChecked(divID)

        var objchild = divID.children;
        var count = objchild.length; 
        for(var i=0;i<objchild.length;i++)
        {
            var tempObj = objchild[i];
            if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
            {
                tempObj.checked = false;
            }
            setChildUnChecked(tempObj); 
        }
    }//设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问
    function setChildChecked(divID)

        var objchild = divID.children;
        var count = objchild.length; 
        for(var i=0;i<objchild.length;i++)
        {
            var tempObj = objchild[i];
            if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
            {
                tempObj.checked = true;
            }
            setChildChecked(tempObj); 
        }
    }//触发事件
    function CheckEvent()
    {    var objNode = event.srcElement;     if(objNode.tagName!="INPUT" || objNode.type!="checkbox")
        return;    if(objNode.checked==true)
        {
            setParentChecked(objNode);
            var objID = objNode.getAttribute("ID");
            var objID = objID.substring(0,objID.indexOf("CheckBox")); 
            var objParentDiv = document.getElementById(objID+"Nodes");
            if(objParentDiv==null || objParentDiv == "undefined")
            {
                return;
            } 
            setChildChecked(objParentDiv);
        }
        else
        {
            var objID = objNode.getAttribute("ID");
            var objID = objID.substring(0,objID.indexOf("CheckBox")); 
            var objParentDiv = document.getElementById(objID+"Nodes");
            if(objParentDiv==null || objParentDiv == "undefined")
            {
                return;
            } 
            setChildUnChecked(objParentDiv);
        }
    }</script>
    在Page_Load下加入如下:
    this.Treeviewname.Attributes.Add("onclick", "CheckEvent()"); 
    其中 Treeview是你的名称