treeviewcheckbox:treeView中CheckBox如何设置子节点Check属性



Asp.net 2.0 中带有CheckBoxTreeViewControl控件 父节点CheckBox属性改了后如何修改其子节点Check状态?

有两种思路方法:
是PostBack回服务器端处理:
这种思路方法每次PostBack都会刷新页面同时展开收缩节点也会PostBack回去刷新页面用户体验很是不好
首先在代码中注册属性:
this.TreeView1.Attributes.Add("onclick", "postBackByObject");

设置TreeView1属性:

OnTreeNodeCheckChanged="TreeNodeCheckChangeFunction"
JavaScript脚本如下所示:

<script language="javascript">
function postBackByObject
{
var o = window.event.srcElement;
(element.tagName "INPUT" && element.type "checkbox")
{
__doPostBack("","");
}
}
</script>

然后在服务器段代码中对TreeViewNode子节点选中

protected void TreeNodeCheckChangeFunction(object sender, TreeNodeEventArgs e)
{
SetChildChecked(e.Node);
}

第 2种思路方法:注册javascript脚本事件然后在客户端是JavaScript实现.用这种思路方法页面少了很多不必要Postback减少服务器负担
设置TreeView1属性:
EnableClientScript="true"
加入OnClick事件:

this.TreeView1.Attributes.Add("onclick", "postBackByObject");

JavaScript脚本如下:

<script language="javascript">
function postBackByObject
{
var element = window.event.srcElement;
(element.tagName "INPUT" && element.type "checkbox")
{
var checkedState = element.checked;
while (element.tagName != "TABLE")
element = element.parentElement;

UnCheck(element);
element = element.nextSibling;
(element null)
;

var childTables = element.getElementsByTagName("TABLE");
for (var tableIndex = 0; tableIndex < childTables.length; tableIndex)
Check(childTables[tableIndex], checkedState);
}
}

function UnCheck(table)
{
(table null || table.rows[0].cells.length 2) // This is the root
;
var parentTable = table.parentElement.previousSibling;
Check(parentTable, false);
UnCheck(parentTable);
}

function Check(table, checked)
{
var checkboxIndex = table.rows[0].cells.length - 1;
var cell = table.rows[0].cells[checkboxIndex];
var checkboxes = cell.getElementsByTagName("INPUT");
(checkboxes.length 1)
checkboxes[0].checked = checked;
}
</script>

同时最好给TreeNode属性SelectAction 设置

treeNode.SelectAction = TreeNodeSelectAction.None;
这样整个有CheckBoxTreeViewControl控件基本上就不会有什么和服务器交互情况了获得更好用户体验
Tags:  treeview删除节点 treeview添加节点 treeview节点 treeviewcheckbox

延伸阅读

最新评论

  1. xcxcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

    cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

    cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

    cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

    cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

    cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

    cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

    cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

发表评论