前言

继上文对网格加载数据,本文主要阐述对数据增删改的实现。
一、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. centos7.2 部署k8s集群

    一.背景 二.使用范围 ♦ 测试环境及实验环境 三.安装前说明 ♦ k8s网络基本概念 ♦  集群规划图 ♦ 软件版本选取 Name Version Description docker-ce 18. ...

  2. python如何从内存地址上加载pythn对象

    python如何从内存地址上加载pythn对象 在python中我们可以通过id函数来获取某个python对象的内存地址,或者可以通过调用对象的__repr__魔术函数来获取对象的详细信息 def t ...

  3. python学习方法

    python学习体系 python相关书籍若干本 了解python基础数据类型 熟悉各种类型的操作方法 理解函数与类的概念 练习练习再练习 前期以被动学习为主,把每个知识点都认真的学过去,后期慢慢再把 ...

  4. 详解python的装饰器decorator

    装饰器本质上是一个python函数,它可以让其它函数在不需要任何代码改动的情况下增加额外的功能. 装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志,性能测试,事务处理,缓存, ...

  5. C# 多态和接口

    1多态可以有属性,接口只有方法 2关键字不同,多态有静态多态(abstract)和动态多态(virtual),静态多态不能new()出自己,动态多态可以;多态中可以有自己的方法可设置不需要子类重写,接 ...

  6. Nginx之美多商城前台部署

    这里我们采用动静分离的方式来部署美多商城项目. 动态请求:采用uwsgi与Django进行通信处理动态业务. 静态请求:采用Ngins通过socket与uwsgi进行通信处理静态业务. 第一步:实现u ...

  7. H5异步加载多图

    异步加载多图(可能没啥用,加载慢)(图片预加载,提前给浏览器缓存图片) 1. 用一个计数变量记录需要加载的图片个数 2. 用new Image()去加载,加载完给此对象的src赋值要加载的url路径( ...

  8. HTML,Css,JavaScript之间的关系

    简述HTML,Css,JavaScript 网页设计思路是把网页分成三个层次,即:结构层(HTML).表示层(CSS).行为层(Javascript). 1.HTML(超文本标记语言 Hyper Te ...

  9. 杭电-------2051Bitset(C语言)

    #include<stdio.h> ] = { }; int main() { int m; ; while (~scanf("%d", &m)) { whil ...

  10. pretty-errors:美化python异常输出以使其清晰易读

    1. 安装pretty-errors python -m pip install pretty_errors 2.如果你想让你的每一个程序都能这样在报错时也保持美貌,那么运行下面这这行命令,就不用每次 ...