博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
阅读量:4520 次
发布时间:2019-06-08

本文共 3321 字,大约阅读时间需要 11 分钟。

在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法。

Filter是用来过滤数据的,效果如图:

image

数据过滤分为两种:本地Filter和远程Filter,默认为远程过滤,也就是将查询条件拿到服务器进行查询并得到返回结果。

本地Filter

直接上代码,还是我们上一篇中的GridPanel,加入了Filter功能:

Filter是GridPanel的一个功能,所以放在Features标签内。

GridFilters的属性Local="true"说明要使用的过滤方式为本地,不进行服务器请求。

StringFilter 和 NumericFilter是两个过滤条件,它将过滤不同数据类型(字符串和数字)的字段。DataIndex对应GridPanel Column中的DataIndex。

姓名过滤:

image

年龄过滤:

image

远程Filter

远程过滤的过程是在用户输入过滤条件之后,客户端将用户的输入构造成查询条件,并通过ajax的方式请求服务器,服务器则会根据传入的Filters参数过滤到相应的数据,然后返回给客户端。

为了能够进行远程Filter,我们首先要将GridFilters 的属性Local改为"false",或删除掉Local属性(因为默认进行远程Filter)

然后,我们需要让Store支持远程异步加载数据,我们这里使用PageProxy和OnReadData来完成:

服务器端的storeUserInfo_ReadData代码如下:

protected void storeUserInfo_ReadData(object sender, Ext.Net.StoreReadDataEventArgs e){    int start = e.Start;    int limit = e.Limit;    var userInfoList = UserInfo.GetData();    e.Total = userInfoList.Count;    storeUserInfo.DataSource = userInfoList.Skip(start).Take(limit).ToList();    storeUserInfo.DataBind();}

完成上面的修改以后,我们只是将原来的一次加载数据改成了异步加载数据,接下来我们来修改storeUserInfo方法,使它支持Filter过滤条件:

首先要构造查询条件集合:

//如果是ashx或mvc页面,可以使用context.Request["filter"];string filters = e.Parameters["filter"];FilterConditions conditions = null;

然后根据条件查询,下面是一个简单的示例:

if (!string.IsNullOrWhiteSpace(filters)){    conditions = new FilterConditions(filters);    foreach (var item in conditions.Conditions)    {        switch (item.Field)        {            case "Name":                {                    string value = item.Value
(); userInfoList = userInfoList.FindAll(m => m.Name.Contains(value)); } break; case "Age": { int value = item.Value
(); switch (item.Comparison) { case Comparison.Gt: userInfoList = userInfoList.FindAll(m => m.Age >= value); break; case Comparison.Lt: userInfoList = userInfoList.FindAll(m => m.Age <= value); break; case Comparison.Eq: userInfoList = userInfoList.FindAll(m => m.Age == value); break; } } break; } }}

这里面的item就是一个查询条件,Field是字段,表示要过滤的字段;

item中有一个比较重要的属性Comparison,它是一个枚举类型:

  • Gt:大于
  • Lt:小于
  • Eq:等于

另外,Value<T>()方法可以获取查询条件的值,泛型T是我们需要是类型

 

原创首发,转载请注明出处。

原文链接:

转载于:https://www.cnblogs.com/youring2/p/3566661.html

你可能感兴趣的文章
[.Net]轻量ORM——Dapper
查看>>
语言基础
查看>>
C# : 操作Word文件的API - (将C# source中的xml注释转换成word文档)
查看>>
C#中字符串转换成枚举类型的方法
查看>>
psplash
查看>>
git的安装和简单使用
查看>>
20151024-1025-威海-第5届全国高校软件工程专业教育年会参会总结
查看>>
Airplace平台
查看>>
TinyOS实例介绍
查看>>
css hack 尽我所见
查看>>
[转]ORACLE联机日志文件无故全部消失
查看>>
Javascript基础学习12问(四)
查看>>
[原]VS2012入门图文教程——第一个程序Hello World
查看>>
#pragma once 与 #ifndef 解析(转载)
查看>>
swift 数据存储
查看>>
Objective-C内存管理教程和原理剖析(三)
查看>>
最大子数组
查看>>
pyton random 模块
查看>>
.bat以管理员身份运行
查看>>
如何用3升和5升桶量取4升水?
查看>>