zoukankan      html  css  js  c++  java
  • 【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开发有了一次大的进步了,继续加油。

  • 相关阅读:
    在Java当中如何优雅地处理临时文件
    lombok插件不建议使用的原因
    linux系统下修改tomcat的端口号时,需要修改的地方
    linux系统下报错为:直接在tomcat的bin目录下生成一个错误文件。
    Linux下修改tomcat端口号
    python实现断点续传下载文件
    Python中下划线---完全解读
    linux  指令 备注
    Linux下高并发socket最大连接数所受的各种限制
    python和pywin32实现窗口查找、遍历和点击
  • 原文地址:https://www.cnblogs.com/iwsx/p/7201232.html
Copyright © 2011-2022 走看看