asp,net 怎样实现treeview 选种父节点其子节点也选种
好象js对treeview的checkbox的操作并不能改变真正checked属性!!!有谁能告诉我~~如何在c#里实现,treeview的父节点选种所有子节点被选种,子...
好象js对treeview的checkbox的操作并不能改变真正checked属性!!!
有谁能告诉我~~ 如何在c#里实现,treeview的父节点选种所有子节点被选种,子节点全选种所对应父节点选种?
或者其他的更好的方法~~ 谢谢了 展开
有谁能告诉我~~ 如何在c#里实现,treeview的父节点选种所有子节点被选种,子节点全选种所对应父节点选种?
或者其他的更好的方法~~ 谢谢了 展开
4个回答
2013-08-19
展开全部
懒人,我给你发一个源码:在 Page_Load(object sender, EventArgs e) 里面加入: TreeView1.Attributes.Add("onclick", "CheckEvent(event)");//TreeView1是你树控件的名称。下面的 javascript 放到 <head></head> 之间 <script type="text/javascript">
function CheckEvent(evt)
{
evt=window.event||evt;
var objNode = evt.srcElement||evt.target;
if(objNode.tagName == "INPUT" && objNode.type== "checkbox")
{
var objParentDiv = objNode.id.replace("CheckBox","Nodes");
if(objNode.checked==true)
{
setChildCheckState(objParentDiv,true);
setParentCheckeState(objNode,true);
}
else
{
setChildCheckState(objParentDiv,false);
if(!HasOtherChecked(objNode)){
setParentCheckeState(objNode,false);
}
}
}
}
//判断是否有并行的其他节点被选中
function HasOtherChecked(objNode)
{
var objParentDiv = WebForm_GetParentByTagName(objNode, "div");
var chks = objParentDiv.getElementsByTagName("INPUT");
for(var i=0;i<chks.length;i++){
if(chks[i].checked && chks[i].id != objNode.id)
{
return true;
}
}
return false;
}
//设置父节点
function setParentCheckeState(objNode,chkstate)
{
try{
var objParentDiv = WebForm_GetParentByTagName(objNode, "div");
if(objParentDiv == null || objParentDiv == "undefined "){
return;
}
else{
var objParentChkId = objParentDiv.id.replace("Nodes","CheckBox");
var objParentCheckBox = document.getElementById(objParentChkId);
if(objParentCheckBox){
objParentCheckBox.checked = chkstate;
setParentCheckeState(objParentDiv,chkstate);
}
}
}
catch(e){}
}
//设置子节点
function setChildCheckState(nodeid,chkstate)
{
var node = document.getElementById(nodeid);
if(node){
var chks = node.getElementsByTagName("INPUT");
for(var i=0;i<chks.length;i++){
chks[i].checked = chkstate;
}
}
}
</script>
function CheckEvent(evt)
{
evt=window.event||evt;
var objNode = evt.srcElement||evt.target;
if(objNode.tagName == "INPUT" && objNode.type== "checkbox")
{
var objParentDiv = objNode.id.replace("CheckBox","Nodes");
if(objNode.checked==true)
{
setChildCheckState(objParentDiv,true);
setParentCheckeState(objNode,true);
}
else
{
setChildCheckState(objParentDiv,false);
if(!HasOtherChecked(objNode)){
setParentCheckeState(objNode,false);
}
}
}
}
//判断是否有并行的其他节点被选中
function HasOtherChecked(objNode)
{
var objParentDiv = WebForm_GetParentByTagName(objNode, "div");
var chks = objParentDiv.getElementsByTagName("INPUT");
for(var i=0;i<chks.length;i++){
if(chks[i].checked && chks[i].id != objNode.id)
{
return true;
}
}
return false;
}
//设置父节点
function setParentCheckeState(objNode,chkstate)
{
try{
var objParentDiv = WebForm_GetParentByTagName(objNode, "div");
if(objParentDiv == null || objParentDiv == "undefined "){
return;
}
else{
var objParentChkId = objParentDiv.id.replace("Nodes","CheckBox");
var objParentCheckBox = document.getElementById(objParentChkId);
if(objParentCheckBox){
objParentCheckBox.checked = chkstate;
setParentCheckeState(objParentDiv,chkstate);
}
}
}
catch(e){}
}
//设置子节点
function setChildCheckState(nodeid,chkstate)
{
var node = document.getElementById(nodeid);
if(node){
var chks = node.getElementsByTagName("INPUT");
for(var i=0;i<chks.length;i++){
chks[i].checked = chkstate;
}
}
}
</script>
2013-08-19
展开全部
先判断是否是父节点,如果是全选就把所有的子节点的checked属性设置为真然后在循环判断所有的子节点,如果所有子节点的checked属性都为真,就叫他的父节点被选中,否则判断哪个子节点被选中+操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-19
展开全部
可以的,可以用在treeview加上js选择时的方法;就可以实现联机选择,选择子节点把所有父节点选上,选父节点,把所有子节点选上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-19
展开全部
先判断 选中的节点 是否是lastNode 不是的话 在循环获得其下的所有节点 然后使其全部选中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询