引入EasyUi所有需要的脚本,样式

<link href="/easyui/themes/default/easyui.css" rel="stylesheet" />
<link href="/easyui/themes/icon.css" rel="stylesheet" />
<script src="/easyui/jquery.min.js"></script>
<script src="/easyui/jquery.easyui.min.js"></script>
<script src="/easyui/locale/easyui-lang-zh_CN.js"></script>

JS脚本部分

 <script type="text/javascript">
$(function () {
obj = {
editRow: undefined,
add: function () { $('#save,#redo').show();
if (this.editRow == undefined)
{
/*appenRow 在末尾添加一行*/
$('#box').datagrid('insertRow', {
index: 0,
row: {
cityname: '',
intro: '',
code: '',
}
});
//将第一行设置为可编辑状态
$("#box").datagrid('beginEdit', 0),
this.editRow =0 ; }
}, edit:function()
{
var rows = $('#box').datagrid('getSelections');
if (rows.length == 1) {
if (this.editRow != undefined) { $("#box").datagrid('endEdit', this.editRow) }
if (this.editRow == undefined) {
var index=$("#box").datagrid('getRowIndex',rows[0])
$('#save,#redo').show();
$("#box").datagrid('beginEdit', index)
this.editRow = index
//关闭当前行编辑状态
$("#box").datagrid('unselectRow',index)
}
}
else {
$.messager.alert('警告', '修改只能选中一行','warning');
} },
/*删除*/
remove:function()
{
var rows = $('#box').datagrid('getSelections');
if (rows.length > 0) {
$.messager.confirm('确定操作', '您确定要删除所选中的记录吗', function (flag) {
if (flag)
{
var ids = [];
for (var i = 0; i < rows.length; i++)
{
ids.push(rows[i].cid);
}
$.ajax(
{
url: "/cityManager/cityRemove",
data:{"ids":ids.join(',')},
type: "post",
success: function (data)
{
if (data.Message == "Success")
{
$("#box").datagrid("loaded");
$("#box").datagrid("load");
$("#box").datagrid("unselectAll");
$.messager.show({
title: '提示',
msg:data.flag+'个信息被删除成功!',
})
}
},
error: function (data)
{
$.messager.alert(data);
}
});
obj.editRow = undefined;
}
}
)
}
else {
$.messager.alert('警告','请选中一行或多行','info') }
},
save: function ()
{
//这两句不应该放这里,应该是保存之后放这里
//$('#save,#redo').hide();
//this.editRow = false;
//将第一行设置为结束编辑
//保存当前行的数据结束编辑
$("#box").datagrid('endEdit', this.editRow) },
redo: function ()
{
$('#save,#redo').hide();
this.editRow = undefined;
/*回滚所有从创建或上一次调用acceptChanges函数后更该的数据*/
$("#box").datagrid('rejectChanges')
}
};
/*加载表格*/
$("#box").datagrid({
url: '/cityManager/cityQuery',
singleSelect: false,//多选
pagination: true,//分页
pageSize: 10,//页面大小
pageList: [5, 10, 15, 20, 30, 50, 80, 200],
rownumbers:true,//编号
title: "城市信息",
//右击表格事件
onRowContextMenu:function(e,rowIndex,rowData)
{
/*去掉默认的右击的面板*/
e.preventDefault();
/*显示Menu锁定位置*/
$('#menu').menu('show', {
left: e.pageX,
top: e.pageY, })
}, //双击选中行执行的事件(索引行,数据)
onDblClickRow: function (rowIndex, rowData) {
//将上一次编辑行关闭并且保存
if (obj.editRow!=undefined) {
$("#box").datagrid('endEdit', obj.editRow); }
if (obj.editRow == undefined) {
$('#save,#redo').show();
$("#box").datagrid('beginEdit', rowIndex);
obj.editRow = rowIndex;
}
}, //编辑结束后事件 *添加和跟新的操作在这了*/
onAfterEdit:function(rowIndex,rowDate,changes)
{
var url = '';
var info = '';
/*从上一次的提交获取所有行,类型参数有,inserted,deleted,updated
返回的一个数组 */
var inserted = $("#box").datagrid('getChanges', 'inserted');
var updated = $("#box").datagrid('getChanges', 'updated');
/*添加*/
if (inserted.length> 0)
{
url = '/cityManager/addCity';
info = '添加';
}
/*更新*/
if (updated.length > 0)
{
url = '/cityManager/EditCity';
var info = '更新';
}
$.ajax(
{
url: url,
data: rowDate,
type: "post",
success: function (data) {
if (data.Message == "Success") {
$("#box").datagrid("loaded");//重新加载
$("#box").datagrid("load");//加载
$("#box").datagrid("unselectAll");//去掉所有复选框
$.messager.show({
title: '提示',
msg: data.flag + '个信息被"'+info+'"成功!',
})
}
},
error: function (data) {
$.messager.alert(data);
}
});
$('#save,#redo').hide();
obj.editRow = undefined;//将对象重新赋值为undefined
},
columns: [[
{
field: "cid",
title: "编号",
align: 'center',
width: 300,
checkbox:true
},
{
field: "cityname",
title: "城市名称",
// hidden: true 隐藏列
align: 'center',
width: 300,
editor: {
type: 'validatebox',
options: {
required:true,
}
}
},
{
field: "intro",
title: "介绍",
align: 'center',
width: 100,
editor: { //设置为编辑行
type: 'validatebox',
options: {
required: true,
}
}
},
{
field: "code",
title: "代码",
align: 'center',
width: 100,
editor: { //
type: 'validatebox',
options: {
required: true,
}
}
},
{
field: "createtime",
title: "创建时间",
align: 'center',
width: 100,
editor: { //
type: 'datetimebox',
options: {
required: true,
}
}
},
]],
toolbar: "#tb",
})
})
</script>

HTML部分

 <table id="box"> </table>
<div id="tb" style="padding:5px;height:auto">
<div style="margin-bottom:5px">
<a href="#" class="easyui-linkbutton" onclick="obj.add();" iconcls="icon-add" plain="true">添加</a>
<a href="#" class="easyui-linkbutton" onclick="obj.edit();" iconcls="icon-edit" plain="true">修改</a>
<a href="#" class="easyui-linkbutton" onclick="obj.remove();" iconcls="icon-remove" plain="true">删除</a>
<a href="#" class="easyui-linkbutton" iconcls="icon-save" style="display:none" id="save" onclick="obj.save()" plain="true">保存</a>
<a href="#" class="easyui-linkbutton" iconcls="icon-redo" style="display:none" id="redo" onclick="obj.redo()" plain="true">取消编辑</a>
</div>
</div>
<div id="menu" class="easyui-menu" style="width:100px;display:none">
<div onclick="obj.add();" iconcls="icon-add" plain="true">添加</div>
<div onclick="obj.edit();" iconcls="icon-edit" plain="true">修改</div>
<div onclick="obj.remove();" iconcls="icon-remove" plain="true">删除</div>
</div>

后台.NetMVC代码

       /*查询*/
public ActionResult cityQuery()
{
//获取分页的页数
int pageNum = Convert.ToInt32(Request.Params["page"]);
//获取分页大小
int pageSize = Convert.ToInt32(Request.Params["rows"]);
var CityList = (from u in db.tb_city
orderby u.cid descending
where(u.isdelete==0)
select u).Skip(pageSize * (pageNum - 1)).Take(pageSize);
// using Newtonsoft.Json 序列化转成Json字符串
var jsons = JsonConvert.SerializeObject(CityList); string json = "{\"total\":" + db.tb_city.ToList().Count + ",\"rows\": " + jsons + "}";
return Content(json);
}
/*删除*/
public ActionResult cityRemove()
{ Hashtable ht = new Hashtable();
string[] ids = ConvertHelper.GetString(Request["ids"]).Split(',');
int flag = 0;
foreach (var item in ids)
{
tb_city model = db.tb_city.Find(ConvertHelper.GetInteger(item));
model.isdelete =1;
TryUpdateModel(model);
db.SaveChanges();
flag++;
}
if (flag > 0)
{
ht["Message"] = "Success";
ht["flag"] = flag;
ht["Resulet"] = true;
}
else
{
ht["Message"] = "Error";
ht["Resulet"] = false;
} return Json(ht); }
/*添加*/
public ActionResult addCity()
{
Hashtable ht = new Hashtable();
string cityname = ConvertHelper.GetString(Request["cityname"]);
string code = ConvertHelper.GetString(Request["code"]);
string intro = ConvertHelper.GetString(Request["cityname"]);
tb_city model = new tb_city();
model.cityname = cityname;
model.code = code;
model.intro = intro;
model.isdelete = 0;
db.tb_city.Add(model);
int flag= db.SaveChanges(); if (flag > 0)
{
ht["Message"] = "Success";
ht["flag"] = flag;
ht["Resulet"] = true;
}
else
{
ht["Message"] = "Error";
ht["Resulet"] = false;
}
return Json(ht); } /*修改*/
public ActionResult EditCity()
{
Hashtable ht = new Hashtable();
string id = ConvertHelper.GetString(Request["cid"]);
string cityname = ConvertHelper.GetString(Request["cityname"]);
string code = ConvertHelper.GetString(Request["code"]);
string intro = ConvertHelper.GetString(Request["cityname"]);
string user = ConvertHelper.GetString(Request["cityname"]);
tb_city model = db.tb_city.Find(ConvertHelper.GetInteger(id));
model.cityname = cityname;
model.code = code;
model.intro = intro;
model.isdelete = 0;
TryUpdateModel(model);
int flag= db.SaveChanges(); if (flag > 0)
{
ht["Message"] = "Success";
ht["flag"] = flag;
ht["Resulet"] = true;
}
else
{
ht["Message"] = "Error";
ht["Resulet"] = false;
}
return Json(ht); }

运行后的效果

总结:主要是用到了EasyUIDatagrid中 ,编辑结束后事件onAfterEdit,添加和更新在这里编写(从上一次的提交获取所有行,类型参数有,inserted,deleted,updated 返回的一个数组编辑后的数据)

var inserted = $("#box").datagrid('getChanges', 'inserted');

var updated = $("#box").datagrid('getChanges', 'updated');

EasyuiDatagird绑定分页.NetMVC的更多相关文章

  1. MVC如何使用开源分页插件shenniu.pager.js

    最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...

  2. Jquery制作可以绑定的表格

    //总页数 当前页 可见页 参数 翻页执行后处理的函数 function PageTable(totalPages, currentPage, tableobj, url, where, column ...

  3. Bootstrap Paginator 分页 demo.

    效果如下: 需要的引用以下内容 bootstrap2 http://cnbootstrap.com/ bootstrap-paginator v0.5 主页 http://bootstrappagin ...

  4. 自制Javascript分页插件,支持AJAX加载和URL带参跳转两种初始化方式,可用于同一页面的多个分页和不同页面的调用

    闲话部分 最近闲着实在无聊,就做了点小东西练练手,由于原来一直在用AspNetPager进行分页,而且也进行了深度的定制与原有系统整合的也不错,不过毕竟是用别人的,想着看自己能试着做出来不能,后台的分 ...

  5. ajax局部刷新分页

    //请求数据加载绑定页面 function DindAjax(pageIndex) {//获取参数 var colors = $("#colorsVal").val(); $.aj ...

  6. MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查询条件分页

    前几天做一个小小小项目,使用了MVC+Bootstrap,以前做分页都是异步加载Mvc部分视图的方式,因为这个是小项目,就随便一点.一般的列表页面,少不了有查询条件,下面分享下Drapper+Page ...

  7. ASP.NET MVC利用PagedList分页(一)

    前几天看见博客园上有人写ASP.NET MVC的分页思想,这让我不禁想起了PagedList.PagedList是NuGet上提供的一个分页的类库,能对任何IEnumerable<T>进行 ...

  8. access十万级数据分页

    最近的一个项目采用winform+access,但后来发现客户那边的数据量比较大,有数十万条数据.用sql语句进行分页,每次翻页加载都需要8秒钟左右,实在难以忍受. 后来百度了一下,发现一篇文章我的A ...

  9. jqgrid 配置分页大小及下拉项

    如何配置分页大小的下拉项?显示效果如下: 通过 rowNum 来设置默认分页大小 通过 rowList 来设置分页下拉.   rowList 的值为一个数组,比如:[10,20,30] $(" ...

随机推荐

  1. golang bug Unknown load command 0x32 (50)

    问题 编译文件时报错: /usr/local/go/pkg/tool/darwin_amd64/link: /usr/local/go/pkg/tool/darwin_amd64/link: comb ...

  2. ML: 降维算法-LDA

    判别分析(discriminant analysis)是一种分类技术.它通过一个已知类别的“训练样本”来建立判别准则,并通过预测变量来为未知类别的数据进行分类.判别分析的方法大体上有三类,即Fishe ...

  3. Android adb 模拟滑动 按键 点击事件

    模拟事件全部是通过input命令来实现的,首先看一下input命令的使用: usage: input ... input text <string>       input keyeven ...

  4. Python 进制转换与位运算

    十进制转二进制.八进制.十六进制: dec = int(input("输入数字:")) print("十进制数为:", dec) print("转换为 ...

  5. Docker-compose ports和expose的区别

    docker-compose中有两种方式可以暴露容器的端口:ports和expose. 1 ports ports暴露容器端口到主机的任意端口或指定端口,用法: ports: - "80:8 ...

  6. python打包为独立可执行程序

    linux下 pip install pyinstaller 针对需要的项目 pyinstaller -F -w ./xxx.py 即可

  7. PHP $a='abcdef';请取出$a的值并打印第一个字母

    echo $a[0];echo $a{0};echo chr(ord($a));echo substr( $a, 0,1);

  8. bzoj5019: [Snoi2017]遗失的答案

    Description 小皮球在计算出答案之后,买了一堆皮肤,他心里很开心,但是一不小心,就忘记自己买了哪些皮肤了.==|||万 幸的是,他还记得他把所有皮肤按照1-N来编号,他买来的那些皮肤的编号( ...

  9. offse家族属性

    在JavaScript中,常用offset.scroll和client家族属性来表示元素的位置和大小相关属性,最近在网上找到了一张图来表示三者之间的关系,正好可以在此借鉴一下. 本次主要来看一下off ...

  10. 让HTMLrunner 报告的子列表都 默认展示出来的 方法(方便发送邮件时可以方便查看)

    1.找到生成的测试报告,获取到all元素 2.在HTMLrunner源码,</script> 标签上 加入一个函数 #让所有列表都展示出来window.onload = function ...