treeView中CheckBox如何设置子节点Check属性计算机二级考试

文章作者 100test 发表时间 2009:05:13 17:43:36
来源 100Test.Com百考试题网


  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
  Asp.net 2.0 中带有CheckBox的TreeView控件, 父节点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.
  if (element.tagName == "INPUT" &.&. element.type == "checkbox")
  {
  __doPostBack("","").
  }
  }
  <./script>.
  然后在服务器段代码中对TreeView的Node子节点选中。
  protected void TreeNodeCheckChangeFunction(object sender, TreeNodeEventArgs e)
  {
  SetChildChecked(e.Node).
  }
  第二种方法:注册javascript脚本事件,然后在客户端是JavaScript实现.用这种方法页面少了很多不必要Postback,减少服务器的负担。
  设置TreeView1的属性:
  EnableClientScript="true"
  加入OnClick事件:
  this.TreeView1.Attributes.Add("onclick", "postBackByObject()").
  JavaScript的脚本,如下:
  <.script language="javascript">.
  function postBackByObject()
  {
  var element = window.event.srcElement.
  if (element.tagName == "INPUT" &.&. element.type == "checkbox")
  {
  var checkedState = element.checked.
  while (element.tagName != "TABLE")
  element = element.parentElement.
  UnCheck(element).
  element = element.nextSibling.
  if (element == null)
  return.
  var childTables = element.getElementsByTagName("TABLE").
  for (var tableIndex = 0. tableIndex <. childTables.length. tableIndex )
  Check(childTables[tableIndex], checkedState).
  }
  }
  function UnCheck(table)
  {
  if (table == null || table.rows[0].cells.length == 2) // This is the root
  return.
  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").
  if (checkboxes.length == 1)
  checkboxes[0].checked = checked.
  }
  <./script>.
  同时最好给TreeNode的属性SelectAction 设置一下。
  treeNode.SelectAction = TreeNodeSelectAction.None.
  这样,整个有CheckBox的TreeView控件,基本上就不会有什么和服务器交互的情况了,获得更好的用户体验。

  特别推荐:

  2009年9月全国计算机等级考试时间及科目预告

  2009年上半年全国计算机等级考试参考答案请进入计算机考试论坛

  2009年全国计算机等级考试报名信息汇总

  2009年NCRE考试有新变化

  2009年全国计算机等级考试-大纲

  2009年上半年全国计算机二级考试试题及答案

  2009年上半年全国计算机等级考试试题答案汇总



相关文章


DELPHI技巧:delphi程序中定义热键的方法计算机二级考试
计算机二级DELPHI技巧:编写通用的程序更新模块计算机二级考试
DELPHI技巧:InterBase使用方法总结计算机二级考试
DELPHI技巧:delphi图片换肤处理优化修正代码计算机二级考试
treeView中CheckBox如何设置子节点Check属性计算机二级考试
计算机二级DELPHI技巧:GDI 在Delphi程序的应用计算机二级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛