项目本来使用的是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. 【故障公告】阿里云 RDS 数据库服务器 CPU 100% 造成全站故障

    非常非常抱歉,今晚 19:34 ~ 21:16 园子所使用的阿里云 RDS 数据库服务器突然出现 CPU 100% 问题,造成全站无法正常访问,由此您带来了很大的麻烦,请您谅解. 故障经过是这样的.1 ...

  2. Java内部类使用注意事项

    Java内部类使用注意事项: 1. 非静态内部类成员可以访问外部类实例成员 (如注释1),但外部类访问非静态内部类的成员 必须创建非静态内部类对象来访问其成员,如注释2 public class La ...

  3. AVL自平衡二叉树

    详细的具体步骤 : 一篇讲的很好博客 AVL,红黑树优先博客-Never 先对二叉树的不平衡结构进行总结: 各种旋转 特别注意字母含义(结构)和其旋转操作之间的区别 二叉树不平衡结构 性质 平衡操作 ...

  4. Spring Cloud开发人员如何解决服务冲突和实例乱窜?(IP实现方案)

    一.背景 在我上一篇文章<Spring Cloud开发人员如何解决服务冲突和实例乱窜?>中提到使用服务的元数据来实现隔离和路由,有朋友问到能不能直接通过IP来实现?本文就和大家一起来讨论一 ...

  5. codeforce303C-Minimum Modular-剪枝,暴力

    Minimum Modular 题意:就是在一堆数字中,每一个数字对m取模不能等于这堆数字中的其他数字,同时给了K个机会可以删除一些数字.求最小的m: 思路:我一开始完全没思路,队长说的并查集什么的不 ...

  6. Codeforces Round #480 (Div. 2) B. Marlin

    题目地址:http://codeforces.com/contest/980/problem/B 官方题解: 题意: 有一个城市有4行n列,n是奇数,有一个村庄在(1,1),村民在(4,n)钓鱼:还有 ...

  7. HTML连载35-背景图片的练习、精灵图

    一.背景图片练习 解释:这个例子需要注意的是,我们背景图片嵌套到另一个图片之中.我们设计的注意点在于,怎么定位到我们想定位到的地方. 总结:背景图片就是一块一块的,我们想把块的位置定位好(一般就是宽和 ...

  8. Android-打包AAR步骤以及最为关键的注意事项!

    ### 简介 最近因为项目的要求,需要把开发的模块打包成aar,供其他项目调用,在搞了一段时间后,发现这里还是有很多需要注意的地方,所以记录一下,帮助大家不要走弯路. **首先何为aar包?** ![ ...

  9. 05 python内置函数大全

    一.数学运算 abs:返回数字的绝对值 abs(-1) round:保留浮点数的小数位数,默认保留整数.四舍五入. round(1.553,1) #1.6 divmod:计算除数和被除数的结果,并返回 ...

  10. PB级数据实现秒级查询ES的安装

    什么是ES?ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java语言开发的, ...