【MVC+EasyUI实例】对数据网格的增删改查(下)

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

posted @ 2017-07-18 16:35  iwsx  阅读(711)  评论(0编辑  收藏  举报