【MVC+EasyUI实例】对数据网格的增删改查(下)
前言
继上文对网格加载数据,本文主要阐述对数据增删改的实现。
一、js代码
function Add() {$("#dlg").dialog('open');$("#dlg-form").form('clear');url = "Home/Add";}function Edit() {var selectedRow = $("#dg").datagrid('getSelected');if (selectedRow) {$("#dlg").dialog('open');$("#dlg-form").form('load', selectedRow);url = "Home/Edit";} else {$.messager.alert('消息提醒', '请先选中某行!', 'info');}}function Save() {$("#dlg-form").form('submit', {url: url,onSubmit:function(){return $(this).form('validate');},success: function (result) {if (result == "OK") {$("#dlg").dialog('close');Reload();$.messager.alert('消息提醒', '保存成功!', 'info');} else {$.messager.show({title: '提示',msg: '保存失败!'});}}});}function Delete() {var row = $("#dg").datagrid('getSelected');if (row) {var ProductID = row.ProductID;$.messager.confirm('确认对话框', '是否删除?', function (r) {if (r) {$.ajax({url: "Home/Delete",type: 'POST',data: { ProductID: ProductID },//注意data格式success: function (result) {Reload();$.messager.alert('消息提醒', result, 'info');}});}});} else {$.messager.alert('消息提醒', '请先选中某行!', 'info');}}
这里也是利用easyui实现窗口的打开关闭,还有表单数据加载等功能。
二、后台代码
public ActionResult Add(Products product){var check = sse.Products.Any(x=>x.ProductID==product.ProductID);if (check){return Content("产品ID"+product.ProductID+"已经存在!");}else {sse.Products.Add(product);sse.SaveChanges();return Content("OK");}}public ActionResult Edit(Products product){var check = sse.Products.Where(x => x.ProductID == product.ProductID).Count();if (check>=2){return Content("产品ID" + product.ProductID + "重复2次!");}else{var findProduct = sse.Products.FirstOrDefault(x => x.ProductID == product.ProductID);try {findProduct.ProductID = product.ProductID;findProduct.Name = product.Name;findProduct.Description = product.Description;findProduct.Category = product.Category;findProduct.Price = product.Price;//sse.Entry(findProduct).CurrentValues.SetValues(product);sse.SaveChanges();return Content("OK");}catch(Exception e){throw e;}}}public ActionResult Delete(int ProductID){var delID=sse.Products.FirstOrDefault(x=>x.ProductID==ProductID);if (delID == null)return Content("找不到此信息!");sse.Products.Remove(delID);sse.SaveChanges();return Content("删除成功!");}
这里是运用了Entity Framework的功能,ADO.NET Entity Framework操作数据库的过程对用户是透明的(当然我们可以通过一些工具或方法了解发送到数据库的SQL语句等)。我们唯一能做的是操作EDM,EDM会将这个操作请求发往数据库。
PS:删除时应用了Remove()方法来删去实体,要求实体以另一种状态存在于上下文,不是很理解,刚开始传递的是整个Product实体,结果出错了,改成传递ProductID,再查询出实体,则不会出错。
总结
至此,全部功能完成,第一次实现了MVC和EasyUI的结合,虽然是一个小例子,但是感觉自己对MVC开发有了一次大的进步了,继续加油。

浙公网安备 33010602011771号