MVC4 Jqgrid设计与实现
项目本来使用的是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设计与实现的更多相关文章
- ASP.NET MVC5 入门
参考资料<ASP.NET MVC5 高级编程>第5版 第1章 入门 1.1 ASP.NET MVC 简介 ASP.NET MVC是一种构建Web 应用程序的框架,它将一般的MVC(Mode ...
- [译]MVC网站教程(四):MVC4网站中集成jqGrid表格插件(系列完结)
目录 1. 介绍 2. 软件环境 3. 在运行示例代码之前(源代码 + 示例登陆帐号) 4. jqGrid和AJAX 5. GridSettings 6. ...
- 建筑材料系统 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发
框架介绍: 1.基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2.采用MVC的框架模式,具有耦合性低.重用性高.生命周期成本低.可维护性 ...
- 基于MVC4+EasyUI的Web开发框架形成之旅--MVC控制器的设计
自从上篇<基于MVC4+EasyUI的Web开发框架形成之旅--总体介绍>总体性的概括,得到很多同行的关注和支持,不过上一篇主要是介绍一个总体的界面效果和思路,本系列的文章将逐步介绍其中的 ...
- Asp.net MVC4 Knockoutjs BootStrap Ace NinJect Jqgrid sqlserver2008
Asp.net MVC4 Knockoutjs BootStrap Ace NinJect Jqgrid sqlserver2008
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请 系列目录 创建新表单之后,我们就可以起草申请了,申请按照严格的表单步骤和分 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充 系列目录 补充一下,有人要表单的代码,这个用代码生成器生成表Flow_Form表 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支 系列目录 步骤设置完毕之后,就要设置好流转了,比如财务申请大于50000元( ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤 系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行 ...
随机推荐
- 1014 装箱问题 CODE[VS]
1014 装箱问题 2001年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descripti ...
- C# 活体检测
活体检测有多种情形,本文所指:从摄像头获取的影像中判断是活体,还是使用了相片等静态图片. 场景描述 用户个人信息中上传了近照,当用户经过摄像头时进行身份识别. 此时,如果单纯的使用摄像头获取的影像进行 ...
- Redis 的底层数据结构(SDS和链表)
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件.可能几乎所有的线上项目都会使用到 Redis,无论你是做缓存.或是用作消息中间件,用起来很简单方便 ...
- 初始mqtt服务
MQTT入门 概念 mqtt意为消息队列遥测传输,是IBM开发的一个即时通讯协议.由于其维护一个长连接以轻量级低消耗著称,所以常用于移动端消息推送服务开发. 协议格式 mqtt协议控制报文的格式包含三 ...
- yum rpm apt-get wget 辨析
1)wget: 类似于迅雷,是一种下载工具,通过HTTP.HTTPS.FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理名字是World Wide Web”与“get”的结合.类似于cur ...
- android Drawable Resource学习
转载自: http://blog.csdn.net/true100/article/details/52316423 http://blog.csdn.net/true100/article/deta ...
- VG有空间,创建逻辑卷
1.查看VG空间 [root@CNSZ22PL2787 ~]# vgs VG #PV #LV #SN Attr VSize VFree VolGroup00 1 7 0 wz--n- 1.63t 1. ...
- Winforn中怎样在窗体中打开另一个窗体
场景 在Winform的窗体A中打开另一个窗体B. 实现 //打开新的窗体 CurveCompare cc = new CurveCompare(); cc.Show(); 效果 以上代码的实现参照: ...
- Java如何创建不存在的指定路径的文件?
实际应用中,要在指定位置创建一个文件,但文件及文件之前的目录都不存在,此时可用以下方法进行创建. 以下是主要代码: File f = new File("I:" + File.se ...
- 遇到XML-GB2312网页编码的处理方法
报的错误:encoding error : input conversion failed due to input error, bytes I/O error : encoder error 1 ...