项目本来使用的是webgrid。后台弃用改成Jqgrid插件。

首先介绍一下webgrid的用法:webgrid是mvc中HtmlHelper自带的。首先创建viewmodel用于数据的绑定,然后在页面中进行绑定一些参数的设置即可

具体如下:

@model Models.SearchPageViewModel
@{
WebGrid grid = new WebGrid(null,
rowsPerPage: Model.PagingInfo.ItemsPerPage,
selectionFieldName: "selectedRow",
ajaxUpdateContainerId: "gridContent",
canSort: false);
grid.Bind(Model.modelList, autoSortAndPage: false, rowCount: Model.PagingInfo.TotalItems);
} @if (grid.TotalRowCount > 0)
{
<div id="gridContent">
@grid.GetHtml(
tableStyle: "GridViewTable",
headerStyle: "HeaderStyle",
footerStyle: "FooterStyle",
rowStyle: "RowStyle",
alternatingRowStyle: "AltRowStyle",
selectedRowStyle: "SelectedRowStyle",
mode: WebGridPagerModes.All,
numericLinksCount: 10,
firstText: "首页",
lastText: "尾页",
previousText: "<",
nextText: ">",
columns: grid.Columns(
grid.Column("RowNum", "序号", format: (item) => item.RowNum),
grid.Column("XZQDM", "行政区代码", format: (item) => item.XZQDM, style: null, canSort: false),
grid.Column("XZQMC", "行政区名称", format: (item) => item.XZQMC, canSort: false),
grid.Column("UPTIME", "上传时间", format: (item) => item.UPTIME, canSort: false),
grid.Column(header: "选择",
format: @<text><input class="check-box" id="assignChkBx" name="assignChkBx" type="checkbox" value="@item.PZWH"/></text>)
))
</div>

Jqgrid用法大同小异:

需要引用<script type="text/javascript" src="~/scripts/locales/grid.locale-cn.js"></script>
    <script type="text/javascript" src="~/scripts/jqGrid/jquery.jqGrid.js"></script>

<link type="text/css" href="~/content/jquery-ui/jquery-ui-1.10.4.custom.css" media="screen" rel="Stylesheet" />
    <link type="text/css" href="~/Content/jqGrid/ui.jqgrid.css" media="screen" rel="Stylesheet" />

第一步:定义一个呈现数据的表格 <table id="gridUploadProg" style=" height:100%; width:100%"></table>

第二部:在js里面进行相关设置

var grid = $("#gridUploadProg");
grid.jqGrid({
url: 'ResultManage/QueryData',
mtype: 'post',
datatype: 'json',
loadonce: false,
data: {},
colNames: ['项目ID', '行政区代码', '行政区名称'],
colModel: [
{ name: 'XMID', index: 'XMID', sortable: false, key: true, align: 'center', hidden: true },
{ name: 'XZQDM', index: 'XZQDM' },
{ name: 'XZQMC', index: 'XZQMC', align: 'center' },
{ name: 'XMMC', index: 'XMMC', align: 'center' }
],
rowNum: 10,
rowList: [10, 15, 20, 30],
pager: '#gridUploadProgPager',
emptyrecords: "没有符合要求的数据",
gridview: true,
rownumbers: true,
sortname: 'ProvinceCode',
viewrecords: true,
sortorder: 'asc',
multiselect: true,
caption: '任务管理列表',
jsonReader: {
page: 'page',
total: 'total',
records: 'records',
root: 'rows'
},
height: '100%',
loadui: 'block',
autoScroll: false,
loadComplete: function (data) { //完成服务器请求后,回调函数
// alert(data.records);
if (data.records == 0) { //如果没有记录返回,追加提示信息
$("p").appendTo($("#gridUploadProg")).addClass("nodata").html("找不到相关数据!");
}
else { //否则,删除提示
$("p.nodata").remove();
}
} });

第三步:在control里面进行模型的获取JSON的转换

 public void QueryData(string sidx = "XZQDM", string sord = "DESC", int rows = 10, int page = 1)
{
SearchConditionModel searchCondition = new SearchConditionModel();
if (this.Session["SearchCondition"] != null)
{
searchCondition = (SearchConditionModel)this.Session["SearchCondition"];
} int totalRecord = 0;
IEnumerable<TsakManageViewModel> modelList = this.TaskManageDataContext.GetModelList(
out totalRecord,
provinceCode: searchCondition.XZQ,
rwlx: searchCondition.RWLX,
taskResult: searchCondition.SFTG,
orderField: sidx,
orderType: sord,
pageIndex: page,
pageSize: rows
);
//int index = (page - 1) * rows; // 开始记录数
int totalPage = totalRecord % rows == 0 ? totalRecord
/ rows : totalRecord / rows + 1; // 计算总页数
int pagesize = rows;
string son = Newtonsoft.Json.JsonConvert.SerializeObject(modelList); son = "{ \"page\": " + page.ToString() + ", \"total\": " + totalPage.ToString() + ", \"records\": " + totalRecord.ToString() + ", \"rows\": " + son + "}";
Response.Write(son);
}

以后每一次分页查询都会进到这个action里面,实现分页实时查询数据。JSON数据前面一定要加记录数等信息用于分页的显示。当然还有其他方法返回json数据。理想的格式应该的返回JsonResult的。像这样 return Json(modelList, JsonRequestBehavior.AllowGet);这种方法我还没有测试,不清楚能不能返回数据到界面上。这种方法看起来明显正规一点

MVC4 Jqgrid设计与实现的更多相关文章

  1. ASP.NET MVC5 入门

    参考资料<ASP.NET MVC5 高级编程>第5版 第1章 入门 1.1 ASP.NET MVC 简介 ASP.NET MVC是一种构建Web 应用程序的框架,它将一般的MVC(Mode ...

  2. [译]MVC网站教程(四):MVC4网站中集成jqGrid表格插件(系列完结)

    目录 1.   介绍 2.   软件环境 3.   在运行示例代码之前(源代码 + 示例登陆帐号) 4.         jqGrid和AJAX 5.         GridSettings 6.  ...

  3. 建筑材料系统 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发

    框架介绍: 1.基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2.采用MVC的框架模式,具有耦合性低.重用性高.生命周期成本低.可维护性 ...

  4. 基于MVC4+EasyUI的Web开发框架形成之旅--MVC控制器的设计

    自从上篇<基于MVC4+EasyUI的Web开发框架形成之旅--总体介绍>总体性的概括,得到很多同行的关注和支持,不过上一篇主要是介绍一个总体的界面效果和思路,本系列的文章将逐步介绍其中的 ...

  5. Asp.net MVC4 Knockoutjs BootStrap Ace NinJect Jqgrid sqlserver2008

    Asp.net MVC4 Knockoutjs  BootStrap Ace NinJect  Jqgrid sqlserver2008

  6. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请 系列目录 创建新表单之后,我们就可以起草申请了,申请按照严格的表单步骤和分 ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充 系列目录 补充一下,有人要表单的代码,这个用代码生成器生成表Flow_Form表 ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支 系列目录 步骤设置完毕之后,就要设置好流转了,比如财务申请大于50000元( ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤 系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行 ...

随机推荐

  1. CentOS7安装mysql8.0.12

    一.配置yum源 下载mysql源安装包 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ 复制下载链接:https://d ...

  2. odoo12从零开始:一、安装odoo运行环境(mac)

    写在前面: 接触odoo已经两年多了,在大学做课程设计的时候,无意间了解到odoo这个erp框架,当时的odoo在国内还默默无闻,我也不曾想过自己毕业后会从事到odoo框架的相关开发工作中来.两年多的 ...

  3. 2019dx#9

    Solved Pro.ID Title Ratio(Accepted / Submitted)   1001 Rikka with Quicksort 25.85%(38/147)   1002 Ri ...

  4. codeforces 805 E. Ice cream coloring(dfs)

    题目链接:http://codeforces.com/contest/805/problem/E 题意:你有n个节点,这个n个节点构成一棵树.每个节点拥有有si个类型的ice,同一个节点的ice互相连 ...

  5. poj 2253 Frogger(floyd变形)

    题目链接:http://poj.org/problem?id=1797 题意:给出两只青蛙的坐标A.B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的.显然从A到B存在至少一条的通路,每一条通路 ...

  6. 【github】论怎么去写一个高大上的ReadMe

    前言 以前我时常觉得,自己写的ReadMe很单调乏味,但后来仔细研究一下后,发现有很多方式可以让ReadMe在简洁的基础上变得好看些,所以在这里和大家分享,如果大家有更好的想法,也非常欢迎在评论区留言 ...

  7. Oracle数据库之七 多表查询

    七.多表查询 ​ 对于查询在之前已经学过了简单查询.限定查询.查询排序,这些都属于 SQL 的标准语句,而上一章的单行函数,主要功能是为了弥补查询的不足. ​ 而从多表查询开始就正式进入到了复杂查询部 ...

  8. Go操作MySQL

    MySQL是常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库. Go操作MySQL 连接 Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的 ...

  9. spring boot使用常规发送邮件

    spring boot使用常规发送邮件 1.pom.xml文件依赖: <!-- javax.mail begin--> <dependency> <groupId> ...

  10. Shiro使用Session缓存

    Shiro的Session缓存主要有两种方案,一种是使用Shiro自己的Session,不使用HttpSession,自己实现Shiro的Cache接口和Session缓存等:另外一种是直接使用spr ...