zoukankan      html  css  js  c++  java
  • 基于ICallbackEventHandler的大数据量树

    本文主要在asp.net下面制作生成,利用到了JQuery中的Tree控件,采用的是asp.net中ICallbackEventHandler接口实现.

    本方法比较简单,可以很方便的对一些逻辑要求不高的功能使用.具体生成页面如下:

    然后就是本页面所用到的代码:

    首先是前台页面

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <script src="jquery.treeview/lib/jquery.js" type="text/javascript"></script>
        <script src="jquery.treeview/common.js" type="text/javascript"></script>
        <script src="jquery.treeview/jquery.tree.js" type="text/javascript"></script>
        <link href="jquery.treeview/tree.css" rel="stylesheet" type="text/css" />
        <title>基于ICallbackEventHandler的轻量级ajax回调方法</title>
        <script type="text/javascript">
            $(document).ready(function() {
                raiseEvent();
            });
            
            function rServer(arg, context) {
                  var o = { showcheck: true };   //显示按钮
                  o.data = eval(arg);        //处理json数据
                  $("#showTree").treeview(o);  //绑定到树上
            }
    
            function raiseEvent(arg, context) {
                <%=ClientScript.GetCallbackEventReference(this,"arg","rServer","context") %>;  
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="showTree">
        </div>
        </form>
    </body>
    </html>

    需要说明的是raiseEvent方法和rServer方法,首先是raiseEvent方法发起对服务器端的ajax请求,请求的数据内容存在于arg参数中,然后传递到后台,而其中的代码

    <%=ClientScript.GetCallbackEventReference(this,"arg","rServer","context") %>; 
    则是指明了rServer是回调成功后,所调用的方法.

    后台代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    /*******************************************************
    * 基于ICallbackEventHandler的轻量级ajax回调方法
    * 使用方式:首先页面需要继承自ICallbackEventHandler接口
    * 然后页面必须实现RaiseCallbackEvent和GetCallbackResult
    * 方法,其中注意的是,前面一个函数先被调用,用来接收从前台
    * 传送来的数据,后面一个函数是将处理过的函数返回到前台
    * ***************************************************
    */

    public partial class _Default : System.Web.UI.Page,ICallbackEventHandler
    {
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public string jsonStr = string.Empty;

    public string GetJson()
    {
    string json = "[";
    IList
    <Tree> t = DB.returnParentTree();
    foreach (Tree model in t)
    {
    if (model != t[t.Count - 1])
    {
    json
    += GetJsonByModel(model) + ",";
    }
    else
    {
    json
    += GetJsonByModel(model);
    }
    }
    json
    += "]";
    json
    = json.Replace("'", "\"");
    return json;
    }

    public string GetJsonByModel(Tree t)
    {
    string json = "";
    bool flag = DB.isHaveChild(t.ModuleID);

    json
    = "{"
    + "'id':'" + t.ModuleID + "',"
    + "'text':'" + t.ModuleName + "',"
    + "'value':'" + t.ModuleID + "',"
    + "'showcheck':true,"
    + "'checkstate':'0',"
    + "'hasChildren':" + flag.ToString().ToLower() + ","
    + "'isexpand':false,"
    + "'ChildNodes':";
    if (!flag)
    {
    json
    += "null,";
    json
    += "'complete':false}";
    }
    else
    {
    json
    += "[";
    IList
    <Tree> list = DB.getChild(t.ModuleID);
    foreach (Tree tree in list)
    {
    if (tree != list[list.Count - 1])
    {
    json
    += GetJsonByModel(tree) + ",";
    }
    else
    {
    json
    += GetJsonByModel(tree);
    }
    }
    json
    += "],'complete':true}";
    }
    return json;
    }

    public string GetCallbackResult()
    {
    return jsonStr;
    }

    public void RaiseCallbackEvent(string eventArgument)
    {
    jsonStr
    = GetJson();
    }
    }
  • 相关阅读:
    动态载入DLL
    在DELPHI中使用自定义光标
    Delphi实现提取可执行文件内部所有图标
    delphi 网络函数
    delphi制作dll
    实现半透明效果
    自绘按钮,添加Color属性(转载)
    为汉语名字生成首字母助记码
    DELPHI 获取本月 的第一天 和 最后一天
    GRID用法(取行、列值;定位选中某行等等)
  • 原文地址:https://www.cnblogs.com/scy251147/p/1893843.html
Copyright © 2011-2022 走看看