C#的WebApi 与 EasyUi的DataGrid结合生成的可分页界面
1、从数据库每次取出的数据为当前分页的数据。
2、分页用的是EasyUI 的 Pagination控件,与DataGrid是相对独立的。
3、后台数据获取是通过WebApi去获取。
4、传入参数是:pageSize、pageNumber 及其它条件。传参用的是Post方法(Get同样可以).
效果如图:
其它的不说,直接上代码:
HTML代码:
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
- <title></title>
- <meta charset="utf-8" />
- <link href="/Content/themes/default/easyui.css" rel="stylesheet" />
- <link href="/Content/themes/icon.css" rel="stylesheet" />
- <link href="../../Content/bootstrap.min.css" rel="stylesheet" />
- <link href="../../Css/BootStrapExt.css" rel="stylesheet" />
- <%-- <script src="/Scripts/jquery-1.11.3.min.js"></script>--%>
- <script src="../../JScript/jquery-easyui-1.5.1/jquery.min.js"></script>
- <script src="/Scripts/bootstrap.min.js"></script>
- <%--<script src="/Scripts/jquery.easyui-1.4.5.min.js"></script>--%>
- <script src="../../JScript/jquery-easyui-1.5.1/jquery.easyui.min.js"></script>
- <script type="text/javascript">
- //分页事件
- function RefreshPages(totalNum) {
- $('#uiPages').pagination('refresh', { // change options and refresh pager bar information
- total: totalNum,
- pageList: [10, 15, 20, 25, 30, 50, 100]
- });
- }
- $(function(){
- GetUserData(0, 0);//加载dataGrid数据
- $('#uiPages').pagination({
- onSelectPage: function (pageNumber, pageSize) {
- GetUserData(pageSize, pageNumber);
- }
- });
- });
- function GetUserData(psize,pnumber){
- var grid = $('#grid1');
- var pagesize = $('#uiPages').pagination("options").pageSize; //分页控件的PageSize
- var currIndex = $('#uiPages').pagination("options").pageNumber + 1; //分页控件的当前页数
- if (psize > 0) {
- pagesize = psize;
- currIndex = pnumber;
- }
- var lno = $("#txt_LoginNo").val();
- var lnm = $("#txt_LoginName").val();
- var jsonStr = [{ "name": "pgSize", "value": pagesize }
- , { "name": "pgIndex", "value": currIndex }
- , { "name": "txt_LoginNo", "value": lno }
- , { "name": "txt_LoginName", "value": lnm }
- ];
- var request = JSON.stringify(jsonStr);
- var uri = "/api/UsersInfo/GetUserList1";
- $.ajax({
- url: uri,
- type: 'post',
- data: request,
- contentType: "application/json",
- success: function (data) {
- //取回来的是一个DataSet,有两个表,第一个表第一行是总资料数。第二个表是当前页资料。
- RefreshPages(data.Table[0].num);
- $('#grid1').datagrid('loadData', data.Table1);
- },
- error: function (data) {
- alert(data.responseText);
- }
- });
- }
- function chBrand(val, row)
- {
- if(val==0)
- {
- return "品牌0";
- }
- else if (val=="1")
- {
- return "品牌1";
- }
- }
- </script>
- <style type="text/css">
- .panel-body {
- padding:0;
- }
- </style>
- </head>
- <body class="easyui-layout" style="overflow: hidden;">
- <form id="form1">
- <div data-options="region:'north',split:false,border:false" style="height: 35px; margin-top: 10px; padding-top: 0px; overflow: hidden;">
- <div class="row">
- <div class="col-xs-1 col-sm-1 col-lg-1" style="padding-left:30px;">
- <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-add'" id="a_addUser">Add </a>
- </div>
- <div class="col-xs-2 col-sm-2 col-lg-2">
- <div class="col-xs-5 col-padding-0 col-text-right textbox5">登录名<span style="color: red;">%</span></div>
- <div class="col-xs-7 col-padding-0">
- <input id="txt_LoginNo" class="textbox textbox-text textbox5" name="txt_LoginNo" type="text" placeholder="">
- </div>
- </div>
- <div class="col-xs-2 col-sm-2 col-lg-2">
- <div class="col-xs-5 col-padding-0 col-text-right textbox5">
- 用户姓名<span style="color: red;">%</span>
- </div>
- <div class="col-xs-7 col-padding-0 ">
- <input class="textbox textbox-text textbox5" id="txt_LoginName" name="txt_LoginName" type="text" placeholder="">
- </div>
- </div>
- <div class="col-xs-2 col-sm-2 col-lg-2">
- <div class="col-xs-12">
- <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'" id="a_search">Search</a>
- </div>
- </div>
- </div>
- </div>
- <div data-options="region:'center',border:false" style="border-top: 1px solid #95B8E7; margin-top: 0; padding: 0; overflow: hidden;">
- <div class="easyui-layout" data-options="fit:true">
- <div data-options="region:'north',split:false,border:false" style="height: 30px; margin:0; padding: 0px; overflow: hidden;">
- <div id="uiPages" class="easyui-pagination" data-options="total:0" style="border: 0px solid #95B8E7; margin: 0; padding: 0;">
- </div>
- </div>
- <div data-options="region:'center',border:false,fit:true" style="border: 0px solid #95B8E7; margin-top: 0; padding: 0;">
- <table id="grid1" class="easyui-datagrid" style="width:100%; height: 99%; padding:0; margin: 0;"
- data-options="singleSelect:true,collapsible:true,fit:true,border:false">
- <thead>
- <tr>
- <th data-options="field:'row',width:50,align:'center'"></th>
- <th data-options="field:'LoginNo',width:100">登录名</th>
- <th data-options="field:'LoginName',width:100">用户姓名</th>
- <th data-options="field:'AgentName',">代理商</th>
- <th data-options="field:'AgentMobile',width:100,align:'right'">代理商电话</th>
- <th data-options="field:'Brand',width:100,formatter:chBrand">所属品牌</th>
- </tr>
- </thead>
- </table>
- </div>
- </div>
- </div>
- </form>
- </body>
- </html>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title></title>
<meta charset="utf-8" />
<link href="/Content/themes/default/easyui.css" rel="stylesheet" />
<link href="/Content/themes/icon.css" rel="stylesheet" />
<link href="../../Content/bootstrap.min.css" rel="stylesheet" />
<link href="../../Css/BootStrapExt.css" rel="stylesheet" /> <%-- <script src="/Scripts/jquery-1.11.3.min.js"></script>--%>
<script src="../../JScript/jquery-easyui-1.5.1/jquery.min.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>
<%--<script src="/Scripts/jquery.easyui-1.4.5.min.js"></script>--%>
<script src="../../JScript/jquery-easyui-1.5.1/jquery.easyui.min.js"></script>
<script type="text/javascript">
//分页事件
function RefreshPages(totalNum) {
$('#uiPages').pagination('refresh', { // change options and refresh pager bar information
total: totalNum,
pageList: [10, 15, 20, 25, 30, 50, 100]
});
} $(function(){
GetUserData(0, 0);//加载dataGrid数据
$('#uiPages').pagination({
onSelectPage: function (pageNumber, pageSize) {
GetUserData(pageSize, pageNumber);
}
}); }); function GetUserData(psize,pnumber){
var grid = $('#grid1');
var pagesize = $('#uiPages').pagination("options").pageSize; //分页控件的PageSize
var currIndex = $('#uiPages').pagination("options").pageNumber + 1; //分页控件的当前页数
if (psize > 0) {
pagesize = psize;
currIndex = pnumber;
}
var lno = $("#txt_LoginNo").val();
var lnm = $("#txt_LoginName").val();
var jsonStr = [{ "name": "pgSize", "value": pagesize }
, { "name": "pgIndex", "value": currIndex }
, { "name": "txt_LoginNo", "value": lno }
, { "name": "txt_LoginName", "value": lnm }
]; var request = JSON.stringify(jsonStr); var uri = "/api/UsersInfo/GetUserList1";
$.ajax({
url: uri,
type: 'post',
data: request,
contentType: "application/json",
success: function (data) {
//取回来的是一个DataSet,有两个表,第一个表第一行是总资料数。第二个表是当前页资料。
RefreshPages(data.Table[0].num);
$('#grid1').datagrid('loadData', data.Table1);
},
error: function (data) {
alert(data.responseText);
}
});
} function chBrand(val, row)
{
if(val==0)
{
return "品牌0";
}
else if (val=="1")
{
return "品牌1";
}
} </script>
<style type="text/css">
.panel-body {
padding:0;
}
</style>
</head>
<body class="easyui-layout" style="overflow: hidden;">
<form id="form1">
<div data-options="region:'north',split:false,border:false" style="height: 35px; margin-top: 10px; padding-top: 0px; overflow: hidden;">
<div class="row">
<div class="col-xs-1 col-sm-1 col-lg-1" style="padding-left:30px;">
<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-add'" id="a_addUser">Add </a>
</div>
<div class="col-xs-2 col-sm-2 col-lg-2">
<div class="col-xs-5 col-padding-0 col-text-right textbox5">登录名<span style="color: red;">%</span></div>
<div class="col-xs-7 col-padding-0">
<input id="txt_LoginNo" class="textbox textbox-text textbox5" name="txt_LoginNo" type="text" placeholder="">
</div>
</div>
<div class="col-xs-2 col-sm-2 col-lg-2">
<div class="col-xs-5 col-padding-0 col-text-right textbox5">
用户姓名<span style="color: red;">%</span>
</div>
<div class="col-xs-7 col-padding-0 ">
<input class="textbox textbox-text textbox5" id="txt_LoginName" name="txt_LoginName" type="text" placeholder="">
</div>
</div>
<div class="col-xs-2 col-sm-2 col-lg-2">
<div class="col-xs-12">
<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'" id="a_search">Search</a>
</div>
</div>
</div>
</div>
<div data-options="region:'center',border:false" style="border-top: 1px solid #95B8E7; margin-top: 0; padding: 0; overflow: hidden;">
<div class="easyui-layout" data-options="fit:true">
<div data-options="region:'north',split:false,border:false" style="height: 30px; margin:0; padding: 0px; overflow: hidden;">
<div id="uiPages" class="easyui-pagination" data-options="total:0" style="border: 0px solid #95B8E7; margin: 0; padding: 0;">
</div>
</div>
<div data-options="region:'center',border:false,fit:true" style="border: 0px solid #95B8E7; margin-top: 0; padding: 0;">
<table id="grid1" class="easyui-datagrid" style="width:100%; height: 99%; padding:0; margin: 0;"
data-options="singleSelect:true,collapsible:true,fit:true,border:false">
<thead>
<tr>
<th data-options="field:'row',width:50,align:'center'"></th>
<th data-options="field:'LoginNo',width:100">登录名</th>
<th data-options="field:'LoginName',width:100">用户姓名</th>
<th data-options="field:'AgentName',">代理商</th>
<th data-options="field:'AgentMobile',width:100,align:'right'">代理商电话</th>
<th data-options="field:'Brand',width:100,formatter:chBrand">所属品牌</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</form>
</body>
</html>
WebAPI代码:
- [HttpPost]
- public IHttpActionResult GetUserList1([FromBody]JArray js)
- {
- JToken jt = js.Single(e => e["name"].ToString() == "pgSize");
- int pgSize = int.Parse(jt["value"].ToString());
- jt = js.Single(e => e["name"].ToString() == "pgIndex");
- int pgCurIndex = int.Parse(jt["value"].ToString());
- jt = js.Single(e => e["name"].ToString() == "txt_LoginNo");
- string loginNo = jt["value"].ToString();
- jt = js.Single(e => e["name"].ToString() == "txt_LoginName");
- string LoginName = jt["value"].ToString();
- List<SqlParameter> Parameters = new List<SqlParameter>(); ;
- if (!string.IsNullOrWhiteSpace(loginNo))
- {
- Parameters.Add(new SqlParameter("@LoginNo", loginNo));
- }
- if (!string.IsNullOrWhiteSpace(LoginName))
- {
- Parameters.Add(new SqlParameter("@LoginName", LoginName));
- }
- int startIndex = (pgCurIndex - 1) * pgSize + 1;
- int endIndex = pgCurIndex * pgSize;
- UsersInfo info = new UsersInfo();
- UsersBLL bll = new UsersBLL(info);
- DataSet ds = bll.QueryByPage(Parameters.ToArray(), "", startIndex, endIndex);
- int recordCount = int.Parse(ds.Tables[0].Rows[0][0].ToString());
- return Ok(ds);
- }
[HttpPost]
public IHttpActionResult GetUserList1([FromBody]JArray js)
{
JToken jt = js.Single(e => e["name"].ToString() == "pgSize");
int pgSize = int.Parse(jt["value"].ToString()); jt = js.Single(e => e["name"].ToString() == "pgIndex");
int pgCurIndex = int.Parse(jt["value"].ToString()); jt = js.Single(e => e["name"].ToString() == "txt_LoginNo");
string loginNo = jt["value"].ToString(); jt = js.Single(e => e["name"].ToString() == "txt_LoginName");
string LoginName = jt["value"].ToString(); List<SqlParameter> Parameters = new List<SqlParameter>(); ;
if (!string.IsNullOrWhiteSpace(loginNo))
{
Parameters.Add(new SqlParameter("@LoginNo", loginNo));
}
if (!string.IsNullOrWhiteSpace(LoginName))
{
Parameters.Add(new SqlParameter("@LoginName", LoginName));
}
int startIndex = (pgCurIndex - 1) * pgSize + 1;
int endIndex = pgCurIndex * pgSize; UsersInfo info = new UsersInfo();
UsersBLL bll = new UsersBLL(info); DataSet ds = bll.QueryByPage(Parameters.ToArray(), "", startIndex, endIndex);
int recordCount = int.Parse(ds.Tables[0].Rows[0][0].ToString()); return Ok(ds);
}
读库的我就不贴出来了,我这里用的是自已编写的一个BLL与Module结合紧密的一个DAL层,用SqlParameter传参是因为会对公网,用这个后不需再做SQL注入过虑。
最终返回的DataSet 里有两个表,第一个表是读出资料总数,一个Count(0) num,第二个表,是当前页的资料。所以对应的我HTML的data值也有两个Table。
C#的WebApi 与 EasyUi的DataGrid结合生成的可分页界面的更多相关文章
- Easyui的datagrid结合hibernate实现数据分页
最近在学习easyui的使用,在学到datagrid的时候遇到了一些问题,终于抽点时间整理了一下,分享出来,请各位前辈高手多多指教! 1.先来看看效果,二话不说,上图直观! 2.easyui的data ...
- 运用EasyUI中datagrid读取数据库数据实现分页
1dao层 package com.hanqi.dao; import java.util.ArrayList; import java.util.List; import org.hibernate ...
- abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之一(二十七)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- easyUI 中datagrid 返回列隐藏方法
easyui的datagrid方法返回的列,有的值不需要显示可以使用hidden(属性进行隐藏) columns : [ [{ field : 'bailClass', title : '类别', w ...
- EasyUI 中 DataGrid 控件 列 如何绑定对象中的属性
EasyUI 中 DataGrid 控件 是我们经常用到的控件之一, 但是 DataGrid 控件 在绑定显示列时却不支持对象属性绑定. 模型如下: public class Manager impl ...
- easyui的datagrid行的某一列添加链接
通过formatter方法给easyui 的datagrid 每行增加操作链接. 效果图 jsp代码: <th field="url" width="100&quo ...
- easyui的datagrid打印(转)
在使用easyui插件的时候,使用最多的应该是datagrid插件.有时候根据客户需求,可能需要将datagrid内容进行打印,这时候如果直接调用window.print,可能由于easyui的dat ...
- EasyUI的datagrid分页
EasyUI的datagrid分页 前台代码: <script type="text/javascript"> $(function () { //查询 search( ...
- easyui使用datagrid时列名包含特殊字符导致表头与数据错位的问题
做一个用easyui的datagrid显示数据的功能时发现表格的列头与数据错位了,而且这个现象不总是能重现,一直没搞清楚原因.后来偶然在控制台看出了一点端倪: 推测表头或者单元格的class名应该是用 ...
随机推荐
- ajax post data 获取不到数据,注意 content-type的设置 、post/get(转)
ajax post data 获取不到数据,注意 content-type的设置 .post/get 关于 jQuery data 传递数据.网上各种获取不到数据,乱码之类的. 好吧今天我也遇到了 ...
- xmind 破解
邮箱:x@iroader 序列号: XAka34A2rVRYJ4XBIU35UZMUEEF64CMMIYZCK2FZZUQNODEKUHGJLFMSLIQMQUCUBXRENLK6NZL37JXP4P ...
- asdfo123是神!!!
正常代码不写#define @zdx 平时刷题不写freopen @liuziwen 循环内部不写return 0 @asdfo123 主程序内不写char array @asdfo123 输出时 ...
- ARC063F すぬけ君の塗り絵 2 / Snuke's Coloring 2
题面 一句话题面:给你一些点,求这些点之中夹的最大的矩形周长.(考虑边界) Solution 首先是一个结论,答案矩形一定经过\(x=\frac{w}{2}\)或经过\(y=\frac{h}{2}\) ...
- 算法练习题---罗马数字转int
连接:https://leetcode-cn.com/problems/roman-to-integer/submissions/ 题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 ...
- 廖雪峰Git教程3
转自:https://www.liaoxuefeng.com/wiki/896043488029600 [标签管理] 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签 ...
- git - gitHub生成Markdown目录
就是github-markdown-toc.go. github-markdown-toc.go Github地址 如果你有GO语言(又是你)的编译环境,可以尝试自己编译,如果没有,可以直接下载编译好 ...
- 【java爬虫】利用webmagic框架实战demo
webmagic框架:http://webmagic.io/ WebMagic的结构分为Downloader.PageProcessor.Scheduler.Pipeline四大组件 PageProc ...
- Eclipse新项目检出后报错第一步:导入lib中的jar包【我】
新检出项目报错,第一步,先看项目 web-info下的 lib目录里的包是不是都添加到项目构建中了,可以全选先添加到项目构建中,看项目是否还在报错.
- [Python] 01 - Number and Matrix
故事背景 一.大纲 如下,chapter4 是个概览,之后才是具体讲解. 二. 编译过程 Ref: http://www.dsf.unica.it/~fiore/LearningPython.pdf