EXTJS4 Grid Filter 插件的使用 与后台数据解析------Extjs 查询筛选功能的实现

  先汗一个,一个小功能又踢腾了一天。本来这个带Demo的,但是上面介绍的不是很详细。用的时候问题不大,主要问题在文件导入方面.以为这个插件的使用和其他的不一样。

1.首先是需要引入文件的位置:如图

需要把整个grid都考到vs下,vs中结构如下:

2.设置路径,将文件导入

Ext.Loader.setConfig({ enabled: true });
Ext.Loader.setPath('Ext.ux', '../ext-js4.2/ux');
Ext.require([
'*',
'Ext.toolbar.Paging',
 'Ext.ux.grid.FiltersFeature',//必不可少的
'Scripts.*'
])

3.组织插件配置,这里你也可以将它组织成类

var filters = {
        alias: 'widget.filters',
        ftype: 'filters',

        encode: false, // json encode the filter query

        //指定要对哪些列进行过滤
        filters: [{
            type: 'boolean',
            dataIndex: 'IsSuccessed'
        }]
    };

这里的filter的type有string,boolean,numeric,date,还有list。前四个很容易理解,第五个类似enum,就是列可供选择的常量值。

4.将插件放入gridpanel

features: [filters],

 

5.怎么在后台获取传入的值呢?

先看下筛选的时候都往后台传了什么:

这还只是 一条筛选,如果再几个条件更麻烦,解决方法如下:

//外层数据
public class ExtFilterInfo
    {
        public string Field { get; set; }
        public ExtFilterData Data { get; set; }
    }

//内层数据
    public class ExtFilterData
    {
        public string Type { get; set; }
        public string Value { get; set; }
        public string Comparison { get; set; }
    }
模型数据绑定解析
 public class ExtFilterInfoModelBinder : DefaultModelBinder
    {
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var filter = (ExtFilterInfo)base.BindModel(controllerContext, bindingContext);

            var field = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "[field]");
            if (field != null)
            {
                filter.Field = field.AttemptedValue;
            }
            var type = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "[data][type]");
            var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "[data][value]");
            var comparison = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "[data][comparison]");
            if (filter.Data == null)
            {
                filter.Data = new ExtFilterData();
            }
            if (type != null)
            {
                filter.Data.Type = type.AttemptedValue;
            }
            if (value != null)
            {
                filter.Data.Value = value.AttemptedValue;
            }
            if (comparison != null)
            {
                filter.Data.Comparison = comparison.AttemptedValue;
            }
            return filter;
        }
    }

然后注册registered in Application_Start方法中(将下面代码放进去)

 ModelBinders.Binders.Add(typeof(Oland.HIP.WebAdmin.API.ExtFilterInfo), new Oland.HIP.WebAdmin.API.ExtFilterInfoModelBinder());

9.后台数据改怎么接受

public PageData<Monitor[]> Get([FromUri]string _dc, [FromUri] int page, [FromUri] int start, [FromUri] int limit, [FromUri] ExtFilterInfo[] filter)
        {
}

OK,结束, 本来想给大家看看贴点数据呢,电脑卡的要死,就算了……,如果感觉对您有所帮助的话请点推荐,谢谢……

 

 

 

 

 

 

 

 

时间: 2024-09-22 22:42:13

EXTJS4 Grid Filter 插件的使用 与后台数据解析------Extjs 查询筛选功能的实现的相关文章

Extjs4使用mvc模式,封装Store层的ArrayStore无法动态加载后台数据

问题描述 Extjs4使用mvc模式,封装Store层的ArrayStore无法动态加载后台数据 store层代码 Ext.define('Desktop.store.function.FunctionStore'{ extend: 'Ext.data.ArrayStore' requires:['Desktop.model.function.UserModel'] model: 'Desktop.model.function.UserModel' autoLoad: true proxy:{

Magento - GRID FILTER FOR COLUMNS WITH COMPLEX VALUES

In previous articles we told you how to operate with columns in adminhtml grids. Usually the process is quite fast, for example, if you want to add simple column from the database. But sometimes you need to add column with complex value, processed by

js-博文用什么插件做,前台后台(java)做好看些

问题描述 博文用什么插件做,前台后台(java)做好看些 我想做一个类似于空间日志博文那种类型,编写--保存--发布.要做的好看些就好了!最主要的是贴上一些代码好看一点.把所有的保存到数据库里面.

select2插件:使用input标签并采用ajax请求后台数据,搜索框无效

问题描述 select2插件:使用input标签并采用ajax请求后台数据,搜索框无效 代码如下: $("#countyCd").select2({ placeholder: "请选择县名称", allowClear: true, //minimumInputLength: 2, ajax: { url: getContentPath() + "xxx", dataType: 'json', data: function (term, page)

图片-extjs4获取后台数据,打开之后什么都没有,

问题描述 extjs4获取后台数据,打开之后什么都没有, 如图! 我写的代码并没有错,但是前台却获取不到,然后我猜想要么是我的路劲打开错了,要么就是其他我不知道的问题.这里我首先写了获取的代码之后,再接着我打开的是extjs的静态html页面,(我不知道这是不是错的!感觉应该是错的,因为我要获取的是动态的数据.但是,如果我是错的,那我应该怎么样去访问呢?求大神告知,因为百度搜不到访问的问题,只能在这里问了!) 解决方案 http://blog.sina.com.cn/s/blog_737a9d9

extjs4 grid 单元格点击变成后文本框后 我想让文本框的值变成全选状态

问题描述 extjs4 grid点击变成后 我想让文本框的值变成全选状态 不知道这个.select() 在哪里加上 问题补充:public2 写道 解决方案 给TextField加上selectOnFocus: true 配置解决方案二:就是在你点击完成后,获取这个textfield,比如var textfield = Ext.getCmp('id');textfield.selectText();解决方案三:你的textfield组件上调用

flash与后台数据交换方法整理续

后台|数据 相关文章:flash与后台数据交换方法整理      个人觉得WebService的数据访问速度,仅次于Remoting,但WebService是一种通用型的接口,一般服务端技术都支持的!      WebService的优点:       1.WebService的接口支持比较广泛(Java,ASP.Net,PHP,Coldfusion-我下面举例用):       2.WebService是一个通用型的接口,所以服务端写的接口,不局限于Flash使用,其他程序也可以调用,"一举两

[AS3]Flash与后台数据交换四种方法整理【转】

随着Flash Player 9的普及,AS3编程也越来越多了,所以这次重新整理AS3下几种与后台数据交换方法. 1.URLLoader(URLStream) 2.FlashRemoting 3.XMLSocket(Socket)  4.FMS/FCS 一.URLLoader(URLStream)篇 URLStream和URLLoader中URLLoaderDataFormat.BINARY类似,它提供对下载 URL 的低级访问方式,我在此不再重复了,有兴趣的,可以看Flash帮助中URLStr

jqgrid没有后台数据-jqgrid获取不到后台数据,大神帮忙看一下

问题描述 jqgrid获取不到后台数据,大神帮忙看一下 下面是 页面部分: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> &l