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值啊?
{
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值啊?
{
alert(objTreeCheckBox.value);
}
这不就行了吗?
首先在页面上方一个<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值
{
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是你的名称