jQuery技术

JQuery插件中的treeview与asp.net mvc的结合使用实例

字号+ 作者:H5之家 来源:H5之家 2015-10-15 16:16 我要评论( )

本文章主要介绍jquery插件中的treeview插件通过ajax异步从服务器上下载所需json字符串的实现,服务器端使用asp.net mvc实现。 treeview插件的官方demo地址: htt

JQuery插件中的treeview与asp.net mvc的结合使用实例

时间:2009-10-09 10:00来源:未知 作者:admin 点击:次我要投稿  高质量的ASP.NET空间,完美支持1.0/2.0/3.5/4.0/MVC等

本文章主要介绍jquery插件中的treeview插件通过ajax异步从服务器上下载所需json字符串的实现,服务器端使用asp.net mvc实现。
treeview插件的官方demo地址:
实现步骤:
一、新建一JQueryTreeviewController,其默认的Index View内容如下:
<link rel="stylesheet" href="/Content/jquery.treeview.css" />
 
 <script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
 <script src="/Scripts/jquery.treeview.js" type="text/javascript"></script>
 <script src="/Scripts/jquery.treeview.async.js" type="text/javascript"></script>
 
 <script type="text/javascript">
 $(document).ready(function(){
  $("#black").treeview({
   url: '<%=Url.Action("GetMenuTree","JQueryTreeview") %>'
  });
 });
 </script>
    <h2>TreeViewIndex</h2>
    <ul id="black" class="navigateFiletree">
 </ul>
从以上代码中可以看出,获取此视图后,当页面就绪时将调用GetMenuTree action方法来获取treeview插件所需要的json字符串,并且自动生成树形。
注:代码中引用的js和css文件,在下载的treeview插件包中可以找到。
二、实现GetMenuTree action方法,代码如下:
 

public JsonStringResult GetMenuTree()
        {
            string sql = "SELECT [ModuleID],[SuperModuleID] FROM [SysModules]";
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString))
            {
                conn.Open();
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = sql;
                DataTable dt = new DataTable();
                SqlDataReader reader = cmd.ExecuteReader();
                dt.Load(reader);
                reader.Close();
                conn.Close();

                return this.JsonString(JQTreeHelper.GetJsonString(dt, "ModuleID", "ModuleID", "SuperModuleID", ""));
            }
        }
其作用就是从数据库中读取出需要显示成树形的数据,并且调用JQTreeHelper来生成相应的json字符串,其返回结果中的JsonStringResult 是自定义的一个result类,其作用基本与系统自带的JsonResult相同,只是输出文本时不再进行json序列化而已。
三、实现JQTreeHelper类,代码如下:
    /// <summary>
    /// jquery插件中的treeview控件的帮助类,用于生成treeview控件所需要的html代码结构
    /// </summary>
    public static class JQTreeHelper
    {
        public static List<JQTreeNode> GetJsonData(DataTable dtAllNodes,string idColumnName,string textColumnName,string parentIdColumnName,string rootNodeParentIdValue)
        {
            List<JQTreeNode> rootNodes = new List<JQTreeNode>();
            DataView dvRootNodes = new DataView(dtAllNodes);
            dvRootNodes.RowFilter = parentIdColumnName + "='" + rootNodeParentIdValue + "'";
            foreach (DataRowView dv in dvRootNodes)
            {
                JQTreeNode node = new JQTreeNode();
                if (dv[idColumnName] != DBNull.Value)
                {
                    node.id = dv[idColumnName].ToString();
                }
                node.text = dv[textColumnName].ToString();
                node.children = GetJsonData(dtAllNodes, idColumnName, textColumnName, parentIdColumnName, dv[idColumnName].ToString());
                rootNodes.Add(node);
            }
            return rootNodes;
        }
        public static string GetJsonString(DataTable dtAllNodes, string idColumnName, string textColumnName, string parentIdColumnName, string rootNodeParentIdValue)
        {
            List<JQTreeNode> actual;
            actual = GetJsonData(dtAllNodes, idColumnName, textColumnName, parentIdColumnName, rootNodeParentIdValue);
            //序列化后,由于默认将所有字段都序列化输出,所以需要将没有赋值取默认值的字段替换为空,以此来减少输出的字符数
            StringBuilder result = new StringBuilder();
            new JavaScriptSerializer().Serialize(actual, result);
            result.Replace("\"id\":null,", "");
            result.Replace(",\"expanded\":false", "");
            result.Replace(",\"hasChildren\":false", "");
            result.Replace(",\"classes\":null", "");
            result.Replace(",\"children\":null", "");
            return result.ToString();
        }
    }
    /// <summary>
    /// jquery插件中的treeview控件进行ajax请求时返回的json数据对象
    /// </summary>
    public class JQTreeNode
    {
        /// <summary>
        /// 树节点id
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 树节点文本
        /// </summary>
        public string text { get; set; }
        /// <summary>
        /// 是否展开
        /// </summary>
        public bool expanded { get; set; }
        /// <summary>
        /// 是否有子节点
        /// </summary>
        public bool hasChildren { get; set; }
        /// <summary>
        /// cssclass类名称
        /// </summary>
        public string classes { get; set; }
        /// <summary>
        /// 子节点集合
        /// </summary>
        public List<JQTreeNode> children { get; set; }
    }
到此代码就全部结束。

本站推荐文章:

  • 基于.Net 写我自己的Ajax后台框架AjaxFramewo

    1、为什么要写自己的Ajax后台框架 现在Ajax在web应用方面已经用的稀巴烂了,如果你做...

  • jQuery 1.4: 15个你应该知道的新特性(译)

    原文地址:

  • Asp.net+Jquery实现用户信息异步验证

    用户注册信息验证在web开发中使用的非常多,只要涉及到用户注册,就会涉及到注册信息...

  • 简单的dojo Quick Start/dojo入门解说

    2006年初,dojo还是0.22的时候就很关注它的发展,可一直没有在实际项目中使用。一来是...

  • 什么是Dojo

    Dojo是一个非常强大的面向对象的JavaScript的工具箱, 建议能够去复习一下JavaScript下...

  • Jquery实现自动提示下拉框

    这几天自己在看Jquery,真是越来越喜欢了。张子秋博客里面写的这个系列很不错,在这表...

  • 什么是scriptaculous

    这个单词怎么读? 根据国外网站上别人的读法应该是四亏普特Q乐司 视觉特效 scrīptacu...

  • 列举目前较为流行的45种Ajax框架

    EXT - (中文:) Jquery -

  • 说说微软的Ajax之Atlas

    微软目前目前对于通过Ajax风格的编程在浏览器中实现日益流行的富客户端应用比较感兴趣...

  • 本站热点文章:

  • Asp.net+Jquery实现用户信息异步验证

    用户注册信息验证在web开发中使用的非常多,只要涉及到用户注册,就会涉及到注册信息...

  • Jquery实现自动提示下拉框

    这几天自己在看Jquery,真是越来越喜欢了。张子秋博客里面写的这个系列很不错,在这表...

  • 基于.Net 写我自己的Ajax后台框架AjaxFramewo

    1、为什么要写自己的Ajax后台框架 现在Ajax在web应用方面已经用的稀巴烂了,如果你做...

  • 列举目前较为流行的45种Ajax框架

    EXT - (中文:) Jquery -

  • jQuery 1.4: 15个你应该知道的新特性(译)

    原文地址:

  • 简单的dojo Quick Start/dojo入门解说

    2006年初,dojo还是0.22的时候就很关注它的发展,可一直没有在实际项目中使用。一来是...

  • 什么是Dojo

    Dojo是一个非常强大的面向对象的JavaScript的工具箱, 建议能够去复习一下JavaScript下...

  • 什么是scriptaculous

    这个单词怎么读? 根据国外网站上别人的读法应该是四亏普特Q乐司 视觉特效 scrīptacu...

  • 说说微软的Ajax之Atlas

    微软目前目前对于通过Ajax风格的编程在浏览器中实现日益流行的富客户端应用比较感兴趣...

  • 顶一下

    (2)

    100%

    踩一下

    (0)

    0%

    ------分隔线----------------------------

  • 上一篇:Extjs实现类似confirm的对话框
  • 下一篇:将jQuery应用于login页面的问题及解决

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • Pastebin Hacking新姿势:使用jQuery替换进行恶意软件传播

      Pastebin Hacking新姿势:使用jQuery替换进行恶意软件传播

      2016-02-05 14:00

    • jquery中EasyUI使用技巧小结

      jquery中EasyUI使用技巧小结

      2016-01-21 08:00

    • 使用 jQuery,第 1 部分: 将桌面应用程序引入浏览器

      使用 jQuery,第 1 部分: 将桌面应用程序引入浏览器

      2016-01-18 10:04

    • 【JQuery】animate的使用方法 Jhonse技术博客

      【JQuery】animate的使用方法 Jhonse技术博客

      2016-01-17 15:16

    网友点评