OData 协议 asp.net Mvc WebAPI分页笔记

// 针对 OData协议的Mvc WebAPI 2.2 分页插件
    ; (function ($, window) {

        var tbPQ = function () {
        };
        // get the length from ‘urlAndParamter‘
        function getCount(urlAndParamter, ok_handler) {
            $.ajax(urlAndParamter, {
                type: "get",
                async: true,
                dataType: ‘json‘,
                crossDomain: true,
                success: function (count) {
                    if (!isNaN(count)) {
                        if (typeof ok_handler === ‘function‘) {
                            ok_handler.call(count, count);
                        }
                    } else {
                        throw new Error("can‘t convert to number ");
                    }
                },
                error: function (XMLHttpRequest, error) {
                    throw new Error("can‘t get the data count from the url ");
                }
            });
        };

        // get the data list from ‘urlAndParamter‘
        function getData(urlAndParamter, page, psize, total, ok_handler) {
            // compute and set the $skip value
            var $skip = (page - 1) * psize;
            if ($skip > total) $skip = 0;
            if (urlAndParamter.indexOf(‘?‘) < 0) {
                urlAndParamter = urlAndParamter + "?l=p";
            }
            urlAndParamter = urlAndParamter + "&$skip=" + $skip + "&$top=" + psize;

            $.ajax(urlAndParamter, {
                type: "get",
                async: true,
                dataType: ‘json‘,
                crossDomain: true,
                success: function (data) {
                    if (typeof ok_handler === ‘function‘) {
                        // data.total -> 记录总数
                        // data.skip  -> 跳过条数(一般计算方式为:单页显示数*上一页的页码值)
                        // data.top   -> 单页条数(单页数据最多显示的数据)
                        // data.page  -> 当前页码
                        // data.mpage -> 最大页码
                        // data.list  -> 数据列表
                        // build the result for return
                        var result = {
                            total: total,
                            skip: $skip,
                            top: psize,
                            page: page,
                            mpage: parseInt(Math.floor(total / psize)),
                            list: data
                        };
                        ok_handler.call(result, result);
                    }
                },
                error: function (XMLHttpRequest, error) {
                    // alert(error);
                    throw new Error("can‘t get the data count from the url ");
                }
            });
        }

        // tbPQ Plugin
        tbPQ.fn = tbPQ.prototype = {
            constructor: tbPQ,
            init: function () {
                return new tbPQ().constructor;
            },
            buildPage: function (psize, total) {
            },
            getPagedData: function (durlAndParam, qurlAndParam, page, psize, ok) {
                getCount(qurlAndParam, function (count) {
                    getData(durlAndParam, page, psize, count, ok);
                })
            },
            getPagedData1: function (url, page, psize, ok) {
                tbPQ.fn.getPagedData(url, url + "/?qc=1", page, psize, ok);
            },
        };
        tbPQ.fn.init.prototype = tbPQ.prototype;
        window.TbPQ = tbPQ.fn.init();
    })(jQuery, window);

    //TbPQ.fn.getPagedData1("http://localhost:43402/api/loginlog", 1, 20, function (data) {
    //    // data.total -> 记录总数
    //    // data.skip  -> 跳过条数(一般计算方式为:单页显示数*上一页的页码值)
    //    // data.top   -> 单页条数(单页数据最多显示的数据)
    //    // data.page  -> 当前页码
    //    // data.mpage -> 最大页码
    //    // data.list  -> 数据列表
    //    alert(data.list.length);
    //});
时间: 2024-09-27 07:13:14

OData 协议 asp.net Mvc WebAPI分页笔记的相关文章

我使用Asp.net MVC WebAPI支持OData协议进行分页操作的笔记(第二篇)

在阅读这篇文章的时候,我想你已经看完第一篇文章啦·也有可能跟我一样,现在正在使用它Asp.net WebAPI为我们干活儿.可能是服务分页查询接口,也可能是其它操作,遇到了一些小问题.有问题,那咱就来解决问题吧!(码农万岁,万岁,万万岁!) 扯两句,Asp.net MVC WebAPI,是建立在Asp.net MVC基础上的.所有的请求处理,都遵循MVC的路由规则,对于请求的拦截与处理,都可以通过自定义继承自 System.Web.Http.Filters.ActionFilterAttribu

让Asp.net mvc WebAPI 支持OData协议进行分页查询操作

这是我在用Asp.net mvc WebAPI 支持 OData协议 做分页查询服务时的 个人拙笔. 代码已经开发到oschina上.有兴趣的朋友可以看看,欢迎大家指出不足之处. 看过了园子里的几篇关于ASP.NET MVC WebAPI 支持OData协议的文章,很受启发. 但是对于OData协议下对数据的分页查询,确实没有找到让我满意的东西,可能是个人就这脾气.不喜欢复杂. 对于在 WebAPI 支持OData协议,好处不多讲了,反正,我个人是非常乐意用它来做服务接口之类的. 这篇笔记的主题

Asp.Net Core WebApi学习笔记(四)-- Middleware

Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Middleware功能支持. 在演示Middleware功能之前,先要了解一下Asp.Net管道模型发生了什么样的变化. 第一部分:管道模型 1. Asp.Net管道 在之前的Asp.Net里,主要的管道模型流程如下图所示: 请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象

.net异步性能测试(包括ASP.NET MVC WebAPI异步方法)

很久没有写博客了,今年做的产品公司这两天刚刚开了发布会,稍微清闲下来,想想我们做的产品还有没有性能优化空间,于是想到了.Net的异步可以优化性能,但到底能够提升多大的比例呢?恰好有一个朋友正在做各种语言的异步性能测试(有关异步和同步的问题,请参考客<AIO与BIO接口性能对比>),于是我今天写了一个C#的测试程序. 首先,建一个 ASP.NET MVC WebAPI项目,在默认的控制器 values里面,增加两个方法: // GET api/values?sleepTime=10 [HttpG

学习ASP.NET MVC框架揭秘笔记目录

学习ASP.NET MVC框架揭秘笔记目录 第一章     ASP.NET+MVC 1.1传统的MVC模式 持续更新中,,,,

案例:1 Ionic Framework+AngularJS+ASP.NET MVC WebApi Jsonp 移动开发

落叶的庭院扫的一干二净之后,还要轻轻把树摇一下,抖落几片叶子,这才是Wabi Sabi的境界. 介绍:Ionic是移动框架,angularjs这就不用说了,ASP.Net MVC WebApi提供数据源,开放数据接口 快乐学习 Ionic Framework+PhoneGap 手册1-1{创建APP项目}{点击查看} 快乐学习 Ionic Framework+PhoneGap 手册1-2{介绍Header,Content,Footer的使用}{点击查看} 快乐学习 Ionic Framework

详解ASP.NET MVC数据分页

ASP.NET MVC框架已经进入2.0时代,本文将从ASP.NET MVC数据分页谈起,希望能对大家有所帮助. 在网页上进行表格资料或其他显示资料的分页是一种十分常见的需求,以前我们有 GridView 或 DataPager 可以帮我们自动分页,虽然到了 ASP.NET MVC 一切全部重头来过,但我们也不用真的那麽辛苦的自己实做分页,因为早就有人帮我们写好程式并开放原始码分享给这个世界了. 如果你已经体会到在 ASP.NET MVC 中妥善利用强型别(Strong Typed)特性进行开发

asp.net mvc简单分页实例

@{ ViewBag.Title = "Index"; } @{ int pageIndex = (int)ViewBag.CurrentPage; int pageCount = (int)ViewBag.Pages; } <h2>Index</h2> <table> <tr> <th>cateId</th> <th>cateName</th> <th>cateNote<

我使用Asp.net MVC WebAPI支持OData协议进行分页操作的笔记(第三篇)

第三篇笔记,这是自己 Asp.net MVC OData协议 分页解决方案的 最后一记啦.OK,let's go ! 第一件事儿! 第一件事儿,就是下载这个组件了,你可以通过下面提供的附件下载,当然也可以下载源码自己编译一个. 怎么使用它? 在你返回分页数据的Action上加(ODPageResultAttribute)就可以支持返回分页数据了,分页数据返回的格式为json,包含字段如第一篇笔记中提到的分页数据返回对象一致.具体的请参考项目源代码(ODataPQ.Tests\Controller