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控件基本上就不会有什么和服务器交互情况了获得更好用户体验
2009-6-19 at 19:58
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc