aspx(ashx)使用 JQuery DataTables 查询

本文主要介绍在Web窗体项目中,使用 JQuery DataTables插件需要解决的一些问题。

JQuery DataTables 服务端模式 是 Ajax请求获取数据的, 在Web窗体项目中,我们一般使用 ashx(一般处理程序) 或者 WebService 来 处理Ajax请求。

由于 ashx 或者 webservice 没有 MVC 的模型层,在MVC 中,我们可以直接写一个 DataTables请求表单的模型,把 model 作为 Action 的参数,数据直接就可以对应到 模型里,非常方便。

但是 ashx 和 webservice 却无法实现这样的功能, 那我们在查询的时候,JQuery DataTables 如何传递查询参数,ashx 又如何接收查询参数呐?

假设我们有 一堆查询条件,如下图,该如何传递:

 JQuery DataTables

JQuery DataTables 传递查询参数

我们可以直接使用全局搜索API(search方法),面对多个查询条件, 我们可以使用 JSON数组,传递查询参数, 而后 将 JSON 数组序列化成字符串, 赋给 Search[value] ,而后在服务端 反序列化即可。

  • 注意: 一定要讲 JSON 数组 序列成 字符串, 不然 JSON 数组 将任然以 search[value][条件一],search[value][条件二] 数组的方式传递。

所以我们一定要 将 JSON 数组 序列化成字符串 :"{\"条件一\": xxx,\"条件二\": xxx,}"

实例代码


    /*检索*/
    $('#searchBtn').click(function () {
        var _search_param = {

            "CityName": $.trim($('#city').val()),
            "AnswerCount": $.trim($('#answerCount').val()),
            "IsReal": $.trim($("#askfrom").val()),
            "ContainManagerUser": $.trim($('#containManagerUser').val()),
            "Source": $.trim($('#source').val()),

        //...
        }

        var paramStr = JSON.stringify(_search_param);// 将参数序列化
        page_dt.search(paramStr).draw();//执行查询
    });

序列化后的参数传递如下:

参数序列化

ashx 或 webservice 接收 查询参数

// 查询方法
   private void GetAskList(HttpContext context)
   {
        AskViewModel param = new AskViewModel();//正式查询参数
        //获取查询参数
        //直接将 JSON 参数,反序列化成实体集模型,非常方便
        AskViewModel _param = new JavaScriptSerializer().Deserialize<AskViewModel>(context.Request["search[value]"]);

        //...执行查询,并返回结果

  }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值