zoukankan      html  css  js  c++  java
  • [置顶] Jquery easyui+Jsonp+asp.net+翻页 事件版

    Jquery easyui+Jsonp+asp.net+翻页 事件版

    说明

    Jsonp原理介绍:http://www.jb51.net/article/31167.htm

    说明:这个是纯事件翻页,如果正常开发(小弟才疏学浅自己认为的),是需要靠参数传递来翻页不需要自己定义翻页事件,我这里是为了了解才这样做的,具体请看Test1/Default.aspx.exclude

    构造文件

    basic.html

    显示页面

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <meta  charset="UTF-8"/>
        <title>用户信息列表</title>
        <link  rel="stylesheet" type="text/css" href="../themes/default/easyui.css"/>
        <link  rel="stylesheet" type="text/css" href="../themes/icon.css"/>
        <link  rel="stylesheet" type="text/css" href="../demo/demo.css"/>
        <script type="text/javascript" src="../JS/jquery.min.js"></script>
        <script type="text/javascript" src="../JS/jquery.easyui.min.js"></script>
    </head>
    <body>
        <h2>用户信息列表</h2>
        <div class="demo-info" style="margin-bottom:10px;">
            <div class="demo-tip icon-tip"></div>
            <div>全部用户信息列表.</div>
        </div>
        <div style="margin:10px 0">
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="Add()">Add</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="Update()">Update</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="Delete()">Delete</a>
        </div>
       <table id="tg" class="easyui-datagrid" title="用户信息列表" style="700px;height:350px" data-options="
            singleSelect:true,
            collapsible:true,
            autoRowHeight:false,
            fitColumns:true,
            pagination:true,
            pageSize:10,
            pageList:[10,20,50,100],
            rownumbers:true,
            toolbar:'#tb',
            striped:true
       ">
        <thead>
            <tr>
                <th data-options="field:'ck',checkbox:true"></th>
                <th data-options="field:'userId',80">用户ID</th>
                <th data-options="field:'userName',100">用户名称</th>
                <th data-options="field:'age',80,align:'right'">年龄</th>
                <th data-options="field:'phone',80">手机</th>
                <th data-options="field:'address',250">地址</th>
            </tr>
        </thead>
       </table>
       <div id="update" class="easyui-window" title="修改用户信息" data-options="modal:true,closed:true,collapsible:false,minimizable:false,maximizable:false,iconCls:'icon-save'" style="500px;height:300px;padding:10px 50px;">
            <form id="from_user" name="from_user" style="100%;height:100%">
                <table style="100%;height:100%">
                    <tr>
                        <td>用户ID:</td>
                        <td><input class="easyui-validatebox" type="text" id="txtuserId" name="txtuserId" data-options="required:true" disabled="disabled" readonly="readonly"/></td>
                    </tr>
                    <tr>
                        <td>用户名称:</td>
                        <td><input class="easyui-validatebox" type="text" id="txtuserName" name="txtuserName" data-options="required:true,validType:'length[2,10]'"/></td>
                    </tr>
                    <tr>
                        <td>年龄:</td>
                        <td><input class="easyui-numberbox" id="txtage" name="txtage" data-options="required:true"/></td>
                    </tr>
                    <tr>
                        <td>手机:</td>
                        <td><input class="easyui-validatebox" type="text" id="txtphone" name="txtphone" data-options="required:true,validType:'phone'"/></td>
                    </tr>
                    <tr>
                        <td>地址:</td>
                        <td><input class="easyui-validatebox" type="text" id="txtaddress" name="txtaddress" data-options="validType:'length[0,20]'"/></td>
                    </tr>
                    <tr>
                        <td>用户类型:</td>
                        <td><input class="easyui-combobox"  id="txttype" name="txttype" data-options="valueField:'id',textField:'text',panelHeight:'auto',editable:false,value:'1'"/></td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <a id="save" href="javascript:void(0)" class="easyui-linkbutton">Save</a> 
                            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="cancel()">Cancel</a>
                        </td>
                    </tr>
                </table>
            </form>
       </div>
       <div id="tb" style="height:auto;">
            <a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-add',plain:true" onclick="Add()">Add</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-edit',plain:true" onclick="Update()">Update</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true" onclick="Delete()">Delete</a>
       </div>
       <script type="text/javascript">
            $(document).ready(function(){
                loadData(0,10);
                loadCombobox();
                $('#tg').datagrid('getPager').pagination({
                    onSelectPage:SelectPage,
                    onBeforeRefresh:SelectPage,
                    beforePageText:'第',
                    afterPageText:'页  共{pages}页',
                    displayMag:'当前显示 {from} - {to} 条记录   共 {total} 条记录'
                });
            });
            function loadCombobox(){
                $.ajax({
                    type:"get",
                    async:false,
                    url:'Handler.ashx?cmd=GetUserType',
                    dataType:"jsonp",
                    jsonp:'callback',
                    jsonpCallback:'_dg_loadData',
                    success:function(json){
                        $('#txttype').combobox('loadData',json);
                    },
                    error:function(error,state){
                        $.messager.alert('系统提示',error+"  -1 "+state,'error');
                    }
                });
            }
            function pagerFilter(data){
    			if (typeof data.length == 'number' && typeof data.splice == 'function'){	// is array
    				data = {
    					total: data.length,
    					rows: data
    				}
    			}
    			var dg = $(this);
    			var opts = dg.datagrid('options');
    			var pager = dg.datagrid('getPager');
    			pager.pagination({
    				onSelectPage:function(pageNum, pageSize){
    					opts.pageNumber = pageNum;
    					opts.pageSize = pageSize;
    //					pager.pagination('refresh',{
    //						pageNumber:pageNum,
    //						pageSize:pageSize
    //						
    //					});
    					loadData((opts.pageNumber-1)*parseInt(opts.pageSize),start + parseInt(opts.pageSize));
    				}
    			});
    			if (!data.originalRows){
    				data.originalRows = (data.rows);
    			}
    			var start = (opts.pageNumber-1)*parseInt(opts.pageSize);
    			var end = start + parseInt(opts.pageSize);
    			data.rows = (data.originalRows.slice(start, end));
    			return data;
    		}
    		function SelectPage(pageNum, pageSize){
    		    var opts = $('#tg').datagrid('options');
    		    opts.pageNumber = pageNum;
    			opts.pageSize = pageSize;
    		    loadData((opts.pageNumber-1)*parseInt(opts.pageSize),(opts.pageNumber-1)*parseInt(opts.pageSize) + parseInt(opts.pageSize));
    		}
            function loadData(start,end){
                $.ajax({
                    type:"get",
                    async:false,
                    url:'Handler.ashx?cmd=GetUserName&start='+start+'&end='+end,
                    dataType:"jsonp",
                    jsonp:'callback',
                    jsonpCallback:'_dg_loadData',
                    success:function(json){
                        $('#tg').datagrid('loadData',json);
                    },
                    error:function(error,state){
                        $.messager.alert('系统提示',error+"  0 "+state,'error');
                    }
                });
            }
            function Add(){
                cancel();
                $('#save').unbind().bind('click',UserSave);
                $('#update').window('open');
            }
            function Update(){
                var row=$('#tg').datagrid('getSelected');
                if(row){
                    $('#txtuserId').val(row.userId);
                    $.ajax({
                        type:'get',
                        async:false,
                        url:'Handler.ashx',
                        data:"cmd=GetUser&userId="+escape(row.userId),
                        dataType:"jsonp",
                        jsonp:'callback',
                        jsonpCallback:'_dg_loadData',
                        success:function(json){
                            $('#txtuserName').val(json.userName);
    //                        $('#txtage').val(json.age);
    //                        $('input[name="txtage"]').attr('value',row.age);
                            $('#txtage').numberbox('setValue',json.age);
                            $('#txtphone').val(json.phone);
                            $('#txtaddress').val(json.address);
                            $('#txttype').combobox('setValue',json.type);
                            $('#save').unbind().bind('click',UserUpdate);
                            $('#update').window('open');
                        },
                        error:function(error,state){
                            $.messager.alert('系统提示',error+"  1 "+state,'error');
                        }
                    });
                }
            }
            function Delete(){
                var row=$('#tg').datagrid('getSelected');
                if(row){
                    $.messager.confirm('系统提示','是否删除该用户信息?',function(result){
                        if(result){
                            UserDelete(row.userId)
                        }
                    });
                }
            }
            function UserSave(){
                if(!$('#from_user').form('validate')){
                    return;
                }
                var txtuserId=$('#txtuserId').val();
                var txtuserName=$('#txtuserName').val();
                var txtage=$('#txtage').val();
                var txtphone=$('#txtphone').val();
                var txtaddress=$('#txtaddress').val();
                var txttype=$('#txttype').combobox('getValue');
                $.ajax({
                    type:'get',
                    async:false,
                    url:'Handler.ashx',
                    data:"cmd=SaveUserName&userId="+escape($('#txtuserId').val())+"&userName="+escape($('#txtuserName').val())+"&age="+escape($('#txtage').val())+
                        "&phone="+escape($('#txtphone').val())+"&address="+escape($('#txtaddress').val())+"&type="+escape($('#txttype').combobox('getValue')),
                    dataType:"jsonp",
                    jsonp:'callback',
                    jsonpCallback:'_dg_loadData',
                    success:function(json){
    //                    $('#tg').datagrid('loadData',json);
                        SelectPage($('#tg').datagrid('options').pageNumber,$('#tg').datagrid('options').pageSize);
                        $.messager.alert('系统提示','添加用户信息成功.','info');
                        $('#update').window('close');
                    },
                    error:function(error,state){
                        $.messager.alert('系统提示',error+"  1 "+state,'error');
                    }
                });
            }
            function UserUpdate(){
                if(!$('#from_user').form('validate')){
                    return;
                }
                var txtuserId=$('#txtuserId').val();
                var txtuserName=$('#txtuserName').val();
                var txtage=$('#txtage').val();
                var txtphone=$('#txtphone').val();
                var txtaddress=$('#txtaddress').val();
                var txttype=$('#txttype').combobox('getValue');
                $.ajax({
                    type:'get',
                    async:false,
                    url:'Handler.ashx',
                    data:"cmd=UpdateUserName&userId="+escape($('#txtuserId').val())+"&userName="+escape($('#txtuserName').val())+"&age="+escape($('#txtage').val())+
                        "&phone="+escape($('#txtphone').val())+"&address="+escape($('#txtaddress').val())+"&type="+escape($('#txttype').combobox('getValue')),
                    dataType:"jsonp",
                    jsonp:'callback',
                    jsonpCallback:'_dg_loadData',
                    success:function(json){
    //                    $('#tg').datagrid('loadData',json);
                        SelectPage($('#tg').datagrid('options').pageNumber,$('#tg').datagrid('options').pageSize);
                        $.messager.alert('系统提示','更新用户信息成功.','info');
                        $('#update').window('close');
                    },
                    error:function(error,state){
                        $.messager.alert('系统提示',error+"  2 "+state,'error');
                    }
                });
            }
            function UserDelete(userId){
                if(!userId) return false;
                $.ajax({
                    type:'get',
                    async:false,
                    url:'Handler.ashx',
                    data:"cmd=DeleteUserName&userId="+escape(userId),
                    dataType:"jsonp",
                    jsonp:'callback',
                    jsonpCallback:'_dg_loadData',
                    success:function(json){
    //                    $('#tg').datagrid('loadData',json);
                        SelectPage($('#tg').datagrid('options').pageNumber,$('#tg').datagrid('options').pageSize);
                        $.messager.alert('系统提示','删除用户信息成功.','info');
                        $('#update').window('close');
                    },
                    error:function(error,state){
                        $.messager.alert('系统提示',error+"  3 "+state,'error');
                    }
                });
            }
            function cancel(){
                $('#txtuserId').val('');
                $('#txtuserName').val('');
                $('#txtage').val('');
                $('input[name="txtage"]').attr('');
                $('#txtphone').val('');
                $('#txtaddress').val('');
                $('#txttype').combobox('setValue','1');
                $('#update').window('close');
            }
       </script>
    </body>
    </html>
    

    Handler.ashx

    操作数据页面

    <%@ WebHandler Language="C#" Class="Handler" %>
    
    using System;
    using System.Web;
    using System.Reflection;
    using System.Collections.Generic;
    using System.Transactions;
    
    public class Handler : IHttpHandler {
    
        public List<User> users = new List<User>();
        
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "application/jsonp";
    
            string cmd = context.Request["cmd"];
            if (!string.IsNullOrEmpty(cmd))
            {
                MethodInfo Method = this.GetType().GetMethod(cmd,BindingFlags.NonPublic|BindingFlags.Instance);
                if (Method!=null)
                {
                    Method.Invoke(this, new object[] { context });
                }
            }
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
        void GetUserType(HttpContext context)
        {
            string callback = context.Request["callback"];
            string json = callback + "([" +
                    "{"id":1,"text":"普通用户"}," +
                    "{"id":2,"text":"高级用户"}," +
                    "{"id":3,"text":"铜牌用户"}," +
                    "{"id":4,"text":"银牌用户"}," +
                    "{"id":5,"text":"金牌用户"}," +
                    "{"id":6,"text":"钻石用户"}," +
                "])";
            context.Response.Write(json);
            context.Response.End();
        }
    
        void GetUserName(HttpContext context)
        {
            string callback = context.Request["callback"];
            users = context.Cache["users"] as List<User>;
            if (users==null)
            {
                users = new List<User>();
            }
            string json = callback + "({"total":" + users.Count + ","rows":[";
            int start = int.Parse(context.Request["start"]);
            int end = int.Parse(context.Request["end"]);
            if (end>users.Count)
            {
                end = users.Count;
            }
            for (int i = start; i < end; i++)
            {
                User user = users[i];
                json += "{"userId":" + user.userId + ","userName":"" + user.userName + "","age":" + user.age + ","phone":"" + user.phone + "","address":"" + user.address + ""},";
            }
            json += "]})";
            //string json = callback+"({"total":28,"rows":["+
            //        "{"userId":1,"userName":"A1","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":2,"userName":"A2","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":3,"userName":"A3","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":4,"userName":"A4","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":5,"userName":"A5","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":6,"userName":"A6","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":7,"userName":"A7","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":8,"userName":"A8","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":9,"userName":"A9","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":10,"userName":"A10","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":11,"userName":"A11","age":18,"phone":"15612345678","address":"XXXXXXX"},"+
            //        "{"userId":12,"userName":"A12","age":18,"phone":"15612345678","address":"XXXXXXX"}"+
            //    "]})";
            context.Response.Write(json);
            context.Response.End();
        }
    
        void UpdateUserName(HttpContext context)
        {
            string callback = context.Request["callback"];
            users = context.Cache["users"] as List<User>;
            if (users == null)
            {
                users = new List<User>();
            }
            string userId = context.Request["userId"];
            string userName = context.Request["userName"];
            string age = context.Request["age"];
            string phone = context.Request["phone"];
            string address = context.Request["address"];
            string type = context.Request["type"];
            //string json = callback + "({"total":" + users.Count + ","rows":[";
            foreach (User user in users)
            {
                if (user.userId == int.Parse(userId))
                {
                    user.userName = userName;
                    user.age = int.Parse(age);
                    user.phone = phone;
                    user.address = address;
                    user.type = int.Parse(type);
                }
            }
            context.Cache.Remove("users");
            context.Cache.Insert("users",users);
            //foreach (User user in users)
            //{
            //    json += "{"userId":" + user.userId + ","userName":"" + user.userName + "","age":" + user.age + ","phone":"" + user.phone + "","address":"" + user.address + ""},";
            //}
            //json += "]})";
            context.Response.Write(callback + "(1)");
            context.Response.End();
        }
    
        void SaveUserName(HttpContext context)
        {
            string callback = context.Request["callback"];
            users = context.Cache["users"] as List<User>;
            if (users == null)
            {
                users = new List<User>();
            }
            string userId = context.Request["userId"];
            string userName = context.Request["userName"];
            string age = context.Request["age"];
            string phone = context.Request["phone"];
            string address = context.Request["address"];
            string type = context.Request["type"];
            //string json = callback + "({"total":" + users.Count + ","rows":[";
            using (TransactionScope transaction = new TransactionScope())
            {
                User _users = new User(users[users.Count - 1].userId + 1, userName, int.Parse(age), phone, address,int.Parse(type));
                users.Add(_users);
                context.Cache.Remove("users");
                context.Cache.Insert("users", users);
                transaction.Complete();
            }
            //foreach (User user in users)
            //{
            //    json += "{"userId":" + user.userId + ","userName":"" + user.userName + "","age":" + user.age + ","phone":"" + user.phone + "","address":"" + user.address + ""},";
            //}
            //json += "]})";
            context.Response.Write(callback + "(1)");
            context.Response.End();
        }
    
        void DeleteUserName(HttpContext context)
        {
            string callback = context.Request["callback"];
            users = context.Cache["users"] as List<User>;
            if (users == null)
            {
                users = new List<User>();
            }
            string userId = context.Request["userId"];
            //string json = callback + "({"total":" + users.Count + ","rows":[";
            User _user = null;
            foreach (User user in users)
            {
                if (user.userId == int.Parse(userId))
                {
                    _user = user;
                }
            }
            users.Remove(_user);
            context.Cache.Remove("users");
            context.Cache.Insert("users", users);
            //foreach (User user in users)
            //{
            //    json += "{"userId":" + user.userId + ","userName":"" + user.userName + "","age":" + user.age + ","phone":"" + user.phone + "","address":"" + user.address + ""},";
            //}
            //json += "]})";
            context.Response.Write(callback+"(1)");
            context.Response.End();
        }
    
        void GetUser(HttpContext context)
        {
            string callback = context.Request["callback"];
            users = context.Cache["users"] as List<User>;
            if (users == null)
            {
                users = new List<User>();
            }
            string userId = context.Request["userId"];
            string json = callback + "(";
            User _user = null;
            foreach (User user in users)
            {
                if (user.userId == int.Parse(userId))
                {
                    _user = user;
                }
            }
            json += "{"userId":" + _user.userId + ","userName":"" + _user.userName + "","age":" + _user.age + ","phone":"" + _user.phone + "","address":"" + _user.address + "","type":"" + _user.type + ""}";
            json += ")";
            context.Response.Write(json);
            context.Response.End();
        }
    
    }


    Global.asax

    初始化数据

    <%@ Application Language="C#" %>
    
    <script runat="server">
    
        void Application_Start(object sender, EventArgs e) 
        {
            // 在应用程序启动时运行的代码
    
            System.Collections.Generic.List<User> users = new System.Collections.Generic.List<User>();
            for (int i = 1; i <= 100; i++)
            {
                users.Add(new User(i, "A" + i, new Random().Next(20), "15612345678", "XXXXXX" + new Random().Next(100), new Random().Next(1, 6)));
            }
            //建立回调委托的一个实例
            CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(CacheItemRemoved);
            HttpContext.Current.Cache.Insert("users", users, null, DateTime.Now.AddDays(1), TimeSpan.Zero, CacheItemPriority.High, callBack);
        }
    
        void CacheItemRemoved(string key, object value, CacheItemRemovedReason reason)
        {
            System.Collections.Generic.List<User> users = new System.Collections.Generic.List<User>();
            if(HttpContext.Current.Cache[key] != null){
                HttpContext.Current.Cache.Remove(key);
            }
            users.Add(new User(-1,"缓存已被清除",-1,"---","清除原因:"+reason,1));
            HttpContext.Current.Cache.Insert(key, users);
        }
        
        void Application_End(object sender, EventArgs e) 
        {
            //  在应用程序关闭时运行的代码
    
        }
            
        void Application_Error(object sender, EventArgs e) 
        { 
            // 在出现未处理的错误时运行的代码
    
        }
    
        void Session_Start(object sender, EventArgs e) 
        {
            // 在新会话启动时运行的代码
    
        }
    
        void Session_End(object sender, EventArgs e) 
        {
            // 在会话结束时运行的代码。 
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
            // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 
            // 或 SQLServer,则不会引发该事件。
    
        }
           
    </script>
    

    完成

    Ok,用事件翻页已经好了,下载Demo



  • 相关阅读:
    如何制作静、动态库
    各种时间函数的恩与怨
    一文看懂Vim操作
    如何避免内存泄漏
    和leon一起学Vim
    shell的输入输出重定向
    和Leon一起从头学Git(六)
    和leon一起从头学Git(五)
    深入理解Linux高端内存
    和Leon一起从头学Git(四)
  • 原文地址:https://www.cnblogs.com/memaxiaofeng/p/3275463.html
Copyright © 2011-2022 走看看