Ajax实现无刷新树

2016-02-19 22:27 12 1 收藏

下面是个简单易学的Ajax实现无刷新树教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - Web开发 】

  1.建立一个aspx页面
  html代码
  html xmlns="http://www.w3.org/1999/xhtml"
  head id="Head1" runat="server"
      title小山/title
      link type="text/css" href="../../Styles/tree_css/tree.css" rel="stylesheet"
  /head
  body
      form id="Form1" runat="server"
      table width=100% cellpadding=0 cellspacing=0 border=0
          colgroup
              col width=180 /
              col /
          /colgroup
          tr
              td
                  div class="TreeMenu" id="CategoryTree" style="width: 100%; height: 489px"
                  /div
              /td
              td
                  iframe id=furl height=20 style="height: 497px; width: 100%;"/iframe
              /td
          /tr
      /table   
                             
              script language="jscript"
              function el(id)
              {
                  return document.getElementById(id);               
              }
              function ExpandSubCategory(iCategoryID)
              {
                  var li_father = el("li_" + iCategoryID);
                  if (li_father.getElementsByTagName("li").length 0) //分类已下载
                  {
                      ChangeStatus(iCategoryID);
                      return;
                  }
                 
                  li_father.className = "Opened";
                 
                  switchNote(iCategoryID, true);
                  AjaxMethod.GetSubCategory(iCategoryID, GetSubCategory_callback);               
              }

              function GetSubCategory_callback(response)
              {
                  var dt = response.value.Tables[0];
                  if (dt.Rows.length 0)
                  {
                      var iCategoryID = dt.Rows[0].FatherID;
                  }
                  var li_father = el("li_" + iCategoryID);
                  var ul = document.createElement("ul");
                  for (var i = 0;i dt.Rows.length;i++)
                  {
                      if (dt.Rows[i].IsChild == 1) //叶子节点
                      {
                          var li = document.createElement("li");
                          li.className = "Child";
                          li.id = "li_" + dt.Rows[i].CategoryID;
                         
                          var img = document.createElement("img");
                          img.id = dt.Rows[i].CategoryID;
                          img.className = "s";
                          img.src = "../../Styles/tree_css/s.gif";
                         
                          var a = document.createElement("a");
                          var id = dt.Rows[i].CategoryID;
                          a.onmouseover = function()
                          {
                              PreviewImage(id);
                          };
                          a.href = "javascript:OpenDocument('" + dt.Rows[i].CategoryID + "');";
                          a.innerHTML = dt.Rows[i].CategoryName;
                      }
                      else
                      {
                          var li = document.createElement("li");
                          li.className = "Closed";
                          li.id = "li_" + dt.Rows[i].CategoryID;
                         
                          var img = document.createElement("img");
                          img.id = dt.Rows[i].CategoryID;
                          img.className = "s";
                          img.src = "../../Styles/tree_css/s.gif";
                          img.onclick = function () {
                              ExpandSubCategory(this.id);
                          };
                          img.alt = "展开/折叠";
                         
                          var a = document.createElement("a");
                          a.href = "javascript:ExpandSubCategory(" +
                              dt.Rows[i].CategoryID + ");";
                          a.innerHTML = dt.Rows[i].CategoryName;
                      }
                      li.appendChild(img);
                      li.appendChild(a);
                      ul.appendChild(li);   
                  }
                  li_father.appendChild(ul);
                 
                  switchNote(iCategoryID, false);
              }
             
              // 叶子节点的单击响应函数
              function OpenDocument(iCategoryID)
              {
                  // 预加载信息
                  PreloadFormUrl(iCategoryID);
              }
             
              function PreviewImage(iCategoryID)
              {
                 
              }

              function ChangeStatus(iCategoryID)
              {
                  var li_father = el("li_" + iCategoryID);
                  if (li_father.className == "Closed")
                  {
                      li_father.className = "Opened";
                  }
                  else
                  {
                      li_father.className = "Closed";
                  }               
              }

              function switchNote(iCategoryID, show)
              {
                  var li_father = el("li_" + iCategoryID);
                  if (show)
                  {
                      var ul = document.createElement("ul");
                      ul.id = "ul_note_" + iCategoryID;
                     
                      var note = document.createElement("li");
                      note.className = "Child";
                     
                      var img = document.createElement("img");
                      img.className = "s";
                      img.src = "../../Styles/tree_css/s.gif";
                     
                      var a = document.createElement("a");
                      a.href = "javascript:void(0);";
                      a.innerHTML = "请稍候";
                     
                      note.appendChild(img);
                      note.appendChild(a);
                      ul.appendChild(note);
                      li_father.appendChild(ul);
                  }
                  else
                  {
                      var ul = el("ul_note_" + iCategoryID);
                      if (ul)
                      {
                          li_father.removeChild(ul);
                      }               
                  }
              }

              // 加载根节点
              var tree = el("CategoryTree");
              var root = document.createElement("li");
              root.id = "li_0";
              tree.appendChild(root);
             
              // 加载页面时显示第一级分类
              ExpandSubCategory(0);
             
              function PreloadFormUrl(iCategoryID)
              {
                  // 采用同步调用的方式获取图片的信息               
                  var ds = AjaxMethod.GetFormsList(iCategoryID).value;
                  // 如果返回了结果
                  if (ds)
                  {
                      // 判断数据表是否不为空
                      if (ds.Tables[0].Rows.length 0)
                      {
                          // 返回的信息数据表
                          dt = ds.Tables[0];
                          el("furl").src = dt.Rows[0].FormUrl;                                   
                      }
                      else // 分类下没有
                      {                       
                      }
                  }               
              }
              /script           
      /form
  /body
  /html2.cs代码
  using System;
  using System.Data;
  using System.Configuration;
  using System.Collections;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using System.Web.UI.HtmlControls;
  using AjaxPro;

  public partial class Pages_Home_HomePage : System.Web.UI.Page
  {
      protected void Page_Load(object sender, EventArgs e)
      {
          Utility.RegisterTypeForAjax(typeof(AjaxMethod));
      }
  }3.建立一个tree.css的css样式
  a
  {}{
      text-decoration:none;
  }
  a,a:visited
  {}{
      color:#000;
      background:inherit;
  }
  body
  {}{
      margin:0;
      padding:20px;
      font:12px tahoma,宋体,sans-serif;
  }
  dt
  {}{
      font-size:22px;
      font-weight:bold;
      margin:0 0 0 15px;
  }
  dd
  {}{
      margin:0 0 0 15px;
  }
  h4
  {}{
      margin:0;
      padding:0;
      font-size:18px;
      text-align:center;
  }
  p
  {}{
      margin:0;
      padding:0 0 0 18px;
  }
  p a,p a:visited
  {}{
      color:#00f;
      background:inherit;
  }

  .TreeMenu img.s
  {}{
      cursor:hand;
      vertical-align:middle;
  }
  .TreeMenu ul
  {}{
      padding:0;
  }
  .TreeMenu li
  {}{
      list-style:none;
      padding:0;
  }
  .Closed ul
  {}{
      display:none;
  }
  .Child img.s
  {}{
      background:none;
      cursor:default;
  }

  #CategoryTree ul
  {}{
      margin:0 0 0 17px;
  }
  #CategoryTree img.s
  {}{
      width:34px;
      height:18px;
  }
  #CategoryTree .Opened img.s
  {}{
      background:url(skin3/opened.gif) no-repeat 0 1px;
  }
  #CategoryTree .Closed img.s
  {}{
      background:url(skin3/closed.gif) no-repeat 0 1px;
  }
  #CategoryTree .Child img.s
  {}{
      background:url(skin3/child.gif) no-repeat 13px 2px;
  }

  #CategoryTree
  {}{
      float:left;
      width:249px;
      border:1px solid #99BEEF;
      background:#D2E4FC;
      color:inherit;
      margin:3px;
      padding:3px;
      height:600px;
  }
  4.建立一个类AjaxMethod
  using System;
  using System.Data;
  using System.Data.SqlClient;
  using System.Configuration;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using System.Web.UI.HtmlControls;
  using AjaxPro;

  /**//// summary
  /// Summary description for AjaxMethod
  /// /summary
  public class AjaxMethod
  {}{
      public AjaxMethod()
      {
          //
          // TODO: Add constructor logic here
          //
      }
      [AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
      public static DataSet GetSubCategory(int iCategoryID)
      {}{
          string sql = string.Format("SELECT CategoryID, CategoryName, FatherID, dbo.IsLeaf(CategoryID) as IsChild FROM Category WHERE FatherID = {0}", iCategoryID);
          return GetDataSet(sql);
      }

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

      [AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
      public static DataSet GetFormsList(int iCategoryID)
      {}{
          string sql = string.Format("SELECT * FROM forms WHERE form_category_id = {0}", iCategoryID);
          return GetDataSet(sql);
      }
  public static string ConnectionString = ConfigurationSettings.AppSettings["ConnectionString"].ToString();

          public static DataSet GetDataSet(string sql)
          {}{
              SqlDataAdapter sda = new SqlDataAdapter(sql, ConnectionString);
              DataSet ds = new DataSet();
              sda.Fill(ds);
              if (ds != null)
                  return ds;
              else
                  return null;
          }
  }5.sql脚本
  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Category]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  drop table [dbo].[Category]
  GO

  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Forms]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  drop table [dbo].[Forms]
  GO

  CREATE TABLE [dbo].[Category] (
      [CategoryID] [int] IDENTITY (1, 1) NOT NULL ,
      [CategoryName] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
      [FatherID] [int] NULL
  ) ON [PRIMARY]
  GO

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  CREATE TABLE [dbo].[Forms] (
      [FormID] [int] IDENTITY (1, 1) NOT NULL ,
      [FormName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
      [FormUrl] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
      [Form_category_id] [int] NULL ,
      [target] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
  ) ON [PRIMARY]
  GO
  CREATE FUNCTION IsLeaf (@cat_id int) 
  RETURNS int AS 
  BEGIN

  declare @count int
  select @count = (select count(*) from Category where FatherID=@cat_id)
  if (@count=0)
  return 1
  return 0

  END

来源:http://www.tulaoshi.com/n/20160219/1628357.html

延伸阅读
标签: Web开发
将index.html和upload.php文件保存到apache工作目录,例子使用安装目录D:/Program Files/Apache Software Foundation/Apache2.2/htdocs/ AJAX 客户端页面代码: index.html html  body  h1Ajax file upload sample/h1br/input id="uplaod" name="btn_send" type="button" value="上传测试"/  div id=result/div  PRE...
 前一段时间写了一篇文章,是关于用AJAX技术实现IE TREE无刷新的方法。 原文:http://bliss.cnblogs.com/archive/2006/03/15/350695.html 在原文中我说的是用javascript语法,当IE TREE被ONCLICK时,取得IE TREE的VALUE值。 因为当时我取的VALUE值中,包含IE TREE所点击的节点的INDEX值,所以,取得VALUE值后,用字...
标签: Web开发
尤其是在Jquery,porotype,Ext等框架流行之后,大量简化的代码可说是为程序员带来了福音, 从繁重的代码工作之中解脱出来,轻易的就可以实现过去书写复杂的功能。 不过有利有弊,到如今,习惯了使用各种框架,而很少自己书写内部源码的程序员们,还有几个记得Ajax那其实并不算复杂的基本代码呢? 今天,为了不遗忘当初的热忱,我把这基础的...
 先看MSDN Library 2005上的这个例子! ------ ClientCallback.aspx ------ <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ClientCallback.aspx.cs" ­ Inherits="ClientCallback" % <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...
标签: Web开发
Ajax内部交流文档一、使用Ajax的主要原因 1、通过适当的Ajax应用达到更好的用户体验; 2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。 二、引用 Ajax这个概念的最早提出者Jesse James Garrett认为: Ajax是A...

经验教程

649

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部