ASP.NET Ajax实现无刷新树

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>
</html>

时间: 2024-08-30 13:24:40

ASP.NET Ajax实现无刷新树的相关文章

asp.net AJAX实现无刷新获得数据_实用技巧

register.aspx页面代码: <script type="text/javascript"> function checkuser() { var option={ parameters:"userid="+$("userid").value, method:"post", onSuccess:function(transport){ var rp=transport.responseText; if(rp

asp.net Ajax之无刷新评论介绍_基础应用

首先还是建一个DoComments.aspx页面和一个DealComments.ashx页面(代码基本上都有注释,如果没写注释,请先看前几篇!).Docomments.aspx页面中的代码为: 复制代码 代码如下: <head runat="server"> <title></title> <script type="text/javascript"> var objXmlHttp = null; function C

ajax-Jquery Mobile Ajax ASP.NET控件 无刷新页面查询,添加,修改,删除

问题描述 Jquery Mobile Ajax ASP.NET控件 无刷新页面查询,添加,修改,删除 Jquery Mobile Ajax 技术用ASP.NET控件怎么实现无刷新页面查询,添加,修改,删除功能? 现在刷新一次才能执行JavaScript代码,否则没反应,有时候样式也没了. 我写的代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs&q

使用Jquery的Ajax实现无刷新更新,修改,删除页面

原文:使用Jquery的Ajax实现无刷新更新,修改,删除页面 本文将向大家讲述一下最近工作的一些总结,主要包括了以下内容,注册界面以及详细信息界面的编辑.主要是介绍了AJAX技术,因为我觉得其他方面没什么好介绍的.首先是跟大家说一下Ajax的优点,假如你删除了一个页面的内容,你想当于点击了一个按钮,那么这个页面必然发生了回发事件,也就是说,你的页面必然被刷新了一次.以下是我从网上找来的一张Ajax的原理图,本人PS技术太差了,所以索性从网上找算了. 其实我个人对于Ajax技术的理解并没有上面图

利用AJAX实现无刷新数据分页_AJAX相关

以前在使用Asp.Net的时候用过GridView这个控件,这个控件自带分页的功能,虽然很丑,但是功能还是很强大的.这里呢,给大家展示一下更加给力的方式--利用AJAX无刷新直接从服务器获取数据分页. 一.实现过程 注意:一下的内容都是在服务器内使用的. 首先要在服务器的路径下建立几个文件,比如,page1.txt,page2.txt,page3.txt. 每个文件中放入数组,如下: 复制代码 代码如下: [{user:'blue',pass:'123'},{user:'aaa',pass:'d

asp.net中Timer无刷新定时器的实现方法_实用技巧

 本文实例讲述了asp.net中Timer无刷新定时器的实现方法.Timer控件要实现无刷新,得用到ajax技术,这里使用VS2008自带的ajax技术.    首先得添加一个ScriptManager控件,然后再添加一个UpdatePanel用于存放Timer控件内容的,就可以实现无刷新了.下面是详细的内容: 一.前台代码如下: <form id="form1" runat="server"> <asp:ScriptManager ID=&quo

ajax实现无刷新省市县三级联动_AJAX相关

本文实例为大家分享了ajax实现无刷新省市县三级联动的具体代码,供大家参考,具体内容如下 效果图: 实现代码: 1.html: <html> <head> <title></title> <style type="text/css"> select { width: 150px; } </style> <script src="js/Jquery1.7.js" type="tex

asp.net javascript 文件无刷新上传实例代码第1/2页_实用技巧

在新增数据项的时候,用ajax实现无刷新提交,但上传文件的时候,由于数据类型原因,不能将页面的<asp:FileUpload>中以字符串值的方式传到js里调用.我一共找到了两个方法予以解决,实现无刷新上传. 第一种方法:利用js的ADODB.Stream,将文件先转换成流,再通过js上传到服务器,这样有个好处就是可以上传超大文件,并且由于是数据流,可以支持断点续传.方便显示上传进度等人性化功能.唯一的缺点是要客户端浏览器需要设置安全级别,或者安装相关ActiveX控件(这个控件自己做的,加载到

ajax实现无刷新省市县三级联动

本文实例为大家分享了ajax实现无刷新省市县三级联动的具体代码,供大家参考,具体内容如下 效果图: 实现代码: 1.html: <html> <head> <title></title> <style type="text/css"> select { width: 150px; } </style> <script src="js/Jquery1.7.js" type="tex