博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
datagrid在MVC中的运用02-结合搜索
阅读量:6902 次
发布时间:2019-06-27

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

本文接着上一篇,来体验给datagrid加上搜索功能。主要涉及到:

※ 把一个div与datagrid相关起来

※ datagrid接收查询参数
※ 查询参数的封装

效果图:

  查询参数封装

分页相关的是每个页面都能用到的,所以把分页相关的封装成基类。

与查询相关的,封装成继承基类的子类。

public class PageParam
{
public int PageSize { get; set; }
public int PageIndex { get; set; }
}
 
public class BookParam : PageParam
{
public string ItemId { get; set; }
public string ProductId { get; set; }
}

  查询Book的服务类方法就要考虑分页和查询参数

展开using System.Linq; using DataGridInMvc.Models; using System.Collections.Generic; using Microsoft.Ajax.Utilities;namespace DataGridInMvc.Helper {     public class BookService     {         public IEnumerable
LoadPageBookData(BookParam param, out int total) { //创建Book的集合 var books = new List
(); for (int i = 0; i < 30; i++) { books.Add(new Book() { ItemId = "EST-" + i, ProductId = "AV-SB-" + i, ListPrice = (i + 5) * 10m, UnitCost = (i + 2) * 10m, Attr1 = "Attr" + i, Status = (short)0 }); } //搜索逻辑 if (!string.IsNullOrEmpty(param.ItemId)) { books = books.Where(b => b.ItemId.Contains(param.ItemId)).ToList(); } if (!string.IsNullOrEmpty(param.ProductId)) { books = books.Where(b => b.ProductId.Contains(param.ProductId)).ToList(); } total = books.Count(); var result = books.OrderBy(b => b.ItemId) .Skip(param.PageSize*(param.PageIndex - 1)) .Take(param.PageSize); return result; } } }

 

  视图

datagrid的toolbar属性能把div与datagrid相关起来,并显示到datagrid的顶部。

dtagrid的queryParams属性能接受查询参数,传递给Controller.
点击查询按钮的时候,需要带上参数。

展开    

选择分页显示位置: 选择分页显示样式

主键:
产品编号:
搜索

  Controller

展开using System.Web; using System.Web.Mvc; using DataGridInMvc.Helper; using DataGridInMvc.Models;namespace DataGridInMvc.Controllers {     public class HomeController : Controller     {         public ActionResult Index()         {             return View();         }        //         public ActionResult GetData()         {             //接收datagrid传来的参数             int pageIndex = int.Parse(Request["page"]);             int pageSize = int.Parse(Request["rows"]);            //接收搜索参数             string itemId = Request["ItemId"];             string productId = Request["ProductId"];            //构建得到分页数据方法所需的参数             var temp = new BookParam()             {                 PageIndex = pageIndex,                 PageSize = pageSize,                 ItemId = itemId,                 ProductId = productId             };            //分页数据方法的输出参数             int totalNum = 0;            var service = new BookService();             var books = service.LoadPageBookData(temp, out totalNum);            var result = from book in books                 select new {book.ItemId, book.ProductId, book.ListPrice, book.UnitCost, book.Status, book.Attr1};            //total,rows是前台datagrid所需要的             var jsonResult = new {total = totalNum, rows = result};            //把json对象序列化成字符串             string str = JsonSerializeHelper.SerializeToJson(jsonResult);             return Content(str);         }     } }

 

在上一篇介绍过。

你可能感兴趣的文章
zookeeper 实现分布式锁
查看>>
sql server 数据修改不了的设计
查看>>
Reinforcement Learning by Sutton 第三章习题答案
查看>>
mysql tinyint
查看>>
UNIX网络编程——getsockname和getpeername函数
查看>>
Bad Request - Request Too Long
查看>>
sqlist
查看>>
全员利润管理实践(3)-生产的利润管理
查看>>
[转帖]c头文件(.h)的作用
查看>>
http请求的request和response
查看>>
eclipse中添加插件
查看>>
[CodeForce455A]Boredom
查看>>
Research
查看>>
vue实现app页面切换效果
查看>>
修改phpMyAdmin 导入MySQL数据库文件大小限制
查看>>
写了一个关于简单的Excel表格导入sqlserver 2013-08-04 15:23 391人阅读 评论(...
查看>>
[ACM - 图论]还是畅通工程(最小生成树+并查集)
查看>>
码农也来关注下经济问题<美元加息>对我们的影响
查看>>
自娱自乐的小题目(1)
查看>>
Pinyin4j的基本用法 获得拼音的声调
查看>>