TreeView 用法(有代码)(asp.net)

  前台代码

  

复制代码 代码如下:

  <script type="text/javascript">

  //客户端捕捉事件

  function CheckEvent() {

  var objNode = event.srcElement;

  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>

  <body>

  <form id="form1" runat="server">

  <asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" onclick="CheckEvent()">

  </asp:TreeView>

  </form>

  </body>

  后台代码:

  

复制代码 代码如下:

  private void BindGrid()

  {

  DataTable mytable = menuTableBll.GetAllList().Tables[0]; //获取数据

  CreateTree(mytable, TreeView1.Nodes, "0");

  }

  private void CreateTree(DataTable dtNodeSets, TreeNodeCollection node, string parent_id)

  {

  DataView dvList = new DataView(dtNodeSets);

  dvList.RowFilter = "MeunParentId =" + parent_id;

  TreeNode nodeTemp;

  foreach (DataRowView dv in dvList)

  {

  nodeTemp = new TreeNode();

  nodeTemp.Text = dv["MenuName"].ToString();

  nodeTemp.Expanded = true;

  nodeTemp.ToolTip = dv["MeunId"].ToString();

  node.Add(nodeTemp);

  CreateTree(dtNodeSets, nodeTemp.ChildNodes, dv["MeunId"].ToString());

  }

  }