前言

继上文对网格加载数据,本文主要阐述对数据增删改的实现。
一、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开发有了一次大的进步了,继续加油。

【MVC+EasyUI实例】对数据网格的增删改查(下)的更多相关文章

  1. jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!)

    jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!) 废话不多说,直接贴上代码 <table id="configEdatagrid&q ...

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

    前言 此案例是针对之前做的一个小例子的后台框架的修改,从以前的三层框架改为现在的MVC框架,也是做了一次MVC和EasyUI的结合,分为2篇文章来阐述. 界面如下: 点击"添加"按 ...

  3. Easyui datagrid扩展子网格detailview增删改查详解

    话不多gang,先上代码,将以下三个属性插入主网格的初始化参数中: view : detailview, //1 detailFormatter : function(index, row) { // ...

  4. MySQL数据分析(16)— 数据操作之增删改查

    前面我们说学习MySQL要从三个层面,四大逻辑来学,三个层面就是库层面,表层面和数据层面对吧,数据库里放数据表,表里放数据是吧,大家可以回忆PPT中jacky的这图,我们已经学完了库层面和表层面,从本 ...

  5. mvc模式jsp+servel+dbutils oracle基本增删改查demo

    mvc模式jsp+servel+dbutils oracle基本增删改查demo 下载地址

  6. mvc模式jsp+servel+jdbc oracle基本增删改查demo

    mvc模式jsp+servel+jdbc oracle基本增删改查demo 下载地址

  7. AngularJS中使用$http对MongoLab数据表进行增删改查

    本篇体验使用AngularJS中的$http对MongoLab数据表进行增删改查. 主页面: <button ng-click="loadCourse()">Load ...

  8. Mysql数据表的增删改查

    ---恢复内容开始--- Mysql数据表的增删改查 1.创建表   语法:CREATE TABLE 表名(字段1,字段2,字段3.......) CREATE TABLE `users` ( `us ...

  9. C# - VS2019 通过DataGridView实现对Oracle数据表的增删改查

    前言 通过VS2019建立WinFrm应用程序,搭建桌面程序后,通过封装数据库操作OracleHelper类和业务逻辑操作OracleSQL类,进而通过DataGridView实现对Oracle数据表 ...

随机推荐

  1. 全局对象的构造函数会在main函数之前执行?

    #include <iostream> using namespace std; class CTest { public: CTest() { cout << "构 ...

  2. DBSync如何连接并同步MySQL

    DBSync支持各种异构数据库之间的同步,如Access.SQL Server.Oracle.MySQL.DB2等,但很多用户在同步MySQL时遇到问题,这里讲述一下解决措施. 1.问题现象DBSyn ...

  3. 使用ClouderaManager管理的HBase的RegionServer无法启动(启动失败)的问题

    问题概述 "新冠期间"远程办公,需要重新搭建一套ClouderaManager(CM)开发环境,一位测试同事发现HBase的RegionServer无法启动,在CM界面上启动总是失 ...

  4. EMC networker nmm can restore and recover sqlserver as different name to different location

    EMC networker nmm can restore and recover sqlserver as different name to different location That is ...

  5. 《自拍教程5》Python自动化测试学习思路

    前提:熟悉测试业务及流程 任何Python自动化测试的前提,都是必须先熟悉实际测试业务. 任何脱离实际测试业务的自动化都是噱头且无实际意义! 测试的基本流程基本是: 测试需求分析,测试用例设计与评审, ...

  6. windows socket ipv6 SOCK_RAW

    bind处一直报错WSAEADDRNOTAVAIL10049,不知道为什么? WSAEADDRNOTAVAIL 10049 Cannot assign requested address. The r ...

  7. 详解CopyOnWrite容器及其源码

    详解CopyOnWrite容器及其源码 在jave.util.concurrent包下有这样两个类:CopyOnWriteArrayList和CopyOnWriteArraySet.其中利用到了Cop ...

  8. 如何在 Linux 中找出 CPU 占用高的进程

    1) 怎样使用 top 命令找出 Linux 中 CPU 占用高的进程 在所有监控 Linux 系统性能的工具中,Linux 的 top 命令是最好的也是最知名的一个.top 命令提供了 Linux ...

  9. 怎么用wait、notify巧妙的设计一个Future模式?

    我们知道多线程可以实现同时执行多个任务(只是看起来是同时,其实是CPU的时间片切换特别快我们没感觉而已). 现在假设一个做饭的场景,你没有厨具也没有食材.你可以去网上买一个厨具,但是这段时间,你不需要 ...

  10. CVE-2020-0618 SQL 远程代码执行

    CVE-2020-0618 SQL Server远程代码执行 1.简介 SQL Server Reporting Services(SSRS)提供了一组本地工具和服务,用于创建,部署和管理移动报告和分 ...