前言

此案例是针对之前做的一个小例子的后台框架的修改,从以前的三层框架改为现在的MVC框架,也是做了一次MVC和EasyUI的结合,分为2篇文章来阐述。
界面如下:
点击“添加”按钮, 添加产品
 选中某条信息,修改产品
一、导入数据模型
Models文件夹添加实体数据模型,这里使用的是根据数据库生成实体

 二、添加控制器
 三、添加视图
四、编写视图的代码
利用easyui布局,当然注意引入相关的js和css文件
  1. @model MvcEasyUIDemo.Models.Products
  2. @{
  3. ViewBag.Title = "产品管理";
  4. }
  5. <script src="~/Scripts/jquery.easyui.min.js"></script>
  6. @Scripts.Render("~/bundles/home")
  7. @Styles.Render("~/Content/HomeCss")
  8. <style>
  9. #dlg {
  10. padding:5px;
  11. }
  12. #dlg .format{
  13. margin:15px;
  14. }
  15. #dlg .format input{
  16. border-radius:3px;
  17. margin-left:10px;
  18. }
  19. </style>
  20. <h2>产品管理</h2>
  21. <table id="dg"></table>
  22. <div id="dg-button">
  23. <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-reload'" onclick="Reload()">刷新</a>
  24. <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-add'" onclick="Add()">添加</a>
  25. <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-edit'" onclick="Edit()">修改</a>
  26. <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-remove'" onclick="Delete()">删除</a>
  27. <div id="dg-search">
  28. <label for="Name">查询:</label>
  29. <input id="Name" class="easyui-validatebox" data-options="width:200" />
  30. <select id="order" class="easyui-combobox" data-options="width:100">
  31. <option value="asc">升序</option>
  32. <option value="desc">降序</option>
  33. </select>
  34. <a class="easyui-linkbutton" data-options="iconCls:'icon-search'" onclick="Search()">查询</a>
  35. </div>
  36. </div>
  37. <div id="dlg" class="easyui-dialog" data-options="closed:true,title:'产品',buttons:'#dlg-button'">
  38. <form id="dlg-form">
  39. <div class="format">
  40. <label for="ProductID">编  号</label>
  41. <input id="ProductID" name="ProductID" class="easyui-validatebox" data-options="required:false" />
  42. </div>
  43. <div class="format">
  44. <label for="Name">产品名称</label>
  45. <input id="Name" name="Name" class="easyui-validatebox" data-options="required:true" />
  46. </div>
  47. <div class="format">
  48. <label for="Description">描  述</label>
  49. <input id="Description" name="Description" class="easyui-validatebox" data-options="required:true" />
  50. </div>
  51. <div class="format">
  52. <label for="Category">品  类</label>
  53. <input id="Category" name="Category" class="easyui-validatebox" data-options="required:true" />
  54. </div>
  55. <div class="format">
  56. <label for="Price">价  格</label>
  57. <input id="Price" name="Price" class="easyui-validatebox" data-options="required:true" />
  58. </div>
  59. </form>
  60. <div id="dlg-button">
  61. <a class="easyui-linkbutton" data-options="iconCls:'icon-ok'" onclick="Save()">保存</a>
  62. <a class="easyui-linkbutton" data-options="iconCls:'icon-cancel'" onclick="JavaScript:$('#dlg').dialog('close')">取消</a>
  63. </div>
  64. </div>
这里的
  1. @Scripts.Render("~/bundles/home")
  2. @Styles.Render("~/Content/HomeCss")
是在App_Start文件夹里的BundleConfig配置文件配置的,配置的具体地址根据你项目实际地址为准。
  1. bundles.Add(new ScriptBundle("~/bundles/home").Include(
  2. "~/Scripts/home.js"));
  3. bundles.Add(new StyleBundle("~/Content/HomeCss").Include(
  4. "~/Content/themes/icon.css",
  5. "~/Content/themes/default/easyui.css"));
五、编写easyui的js加载部分代码
  1. $(function () {
  2. $("#dg").datagrid({
  3. title: '产品管理',
  4. url: 'Home/GetProductList',
  5. columns: [[
  6. { field: 'ProductID', title: 'ID', width: 150 },
  7. { field: 'Name', title: '产品名称', width: 150 },
  8. { field: 'Description', title: '描述', width: 250 },
  9. { field: 'Category', title: '品类', width: 150 },
  10. { field: 'Price', title: '价格', width: 150 }
  11. ]],
  12. toolbar: '#dg-button',
  13. singleSelect:true,
  14. pagination: true,
  15. pageSize: 10,
  16. pageList: [10, 20, 30],
  17. method: 'get'
  18. });
  19. })
这里注意columns部分的字段名称要和数据库的一致。这里就是利用了url的地址来加载数据的,并不需要向以前一样做一个一般处理程序了,只要在原来的Home控制器里添加一个方法来返回数据即可。
  1. public ActionResult GetProductList() {
  2. var pageSize = Request["rows"] == "" ? 10 : int.Parse(Request["rows"]);
  3. var pageNumber = Request["page"] == "" ? 1 : int.Parse(Request["page"]);
  4. string Name=string.Empty, order=string.Empty;
  5. if(Request["Name"]!=""){
  6. Name=Request["Name"];
  7. }
  8. if(Request["order"]!=""){
  9. order=Request["order"];
  10. }
  11. IQueryable<Products> products;
  12. if (!string.IsNullOrEmpty(Name))
  13. {
  14. products = sse.Products.OrderBy(x => x.Name).Where(x=>x.Name.Contains(Name)).Skip((pageNumber - 1) * pageSize).Take(pageSize);
  15. }
  16. else {
  17. products = sse.Products.OrderBy(x => x.ProductID).Skip((pageNumber - 1) * pageSize).Take(pageSize);
  18. }
  19. var total = sse.Products.Count();
  20. var list = new PageViewModel { rows = products, total = total };
  21. return Json(list,JsonRequestBehavior.AllowGet);
  22. }
注意:这里要利用Json()方法包装数据,返回json格式的数据
其中,PageViewModel是我们为了UI的显示做的一个视图模型ViewModel,放在Models文件夹中
  1. public class PageViewModel
  2. {
  3. public int total { get; set; }
  4. public IQueryable<Products> rows { get; set; }
  5. }
到这里,网格的数据加载呈现就写好了。
还剩增删改的功能。 

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

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

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

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

    前言 继上文对网格加载数据,本文主要阐述对数据增删改的实现. 一.js代码 function Add() { $("#dlg").dialog('open'); $("# ...

  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. 含源码解析,深入Java 线程池原理

    从池化技术到底层实现,一篇文章带你贯通线程池技术. 1.池化技术简介 在系统开发过程中,我们经常会用到池化技术来减少系统消耗,提升系统性能. 在编程领域,比较典型的池化技术有: 线程池.连接池.内存池 ...

  2. 粗谈MySQL事务的特性和隔离级别

    网上对于此类的文章已经十分饱和了,那还写的原因很简单--作为自己的理解笔记. 前言 ​  此篇文章作为自己学习MySQL的一些个人理解,使用的引擎是InnoDb.首先先讲讲事务的概念,在<高性能 ...

  3. asp.net core 2.2升到3.1遇到的问题小记

    趁着武汉疫情,在家研究原来2.2的框架升级到3.1的问题,在过程中遇到不少坑,好在放假有的是时间,一个一个解决,现做个简要记录,供大家参考.推荐认真看这篇文章 [https://docs.micros ...

  4. 面试官:"谈谈分库分表吧?"

    转自:学习Java的小姐姐 www.cnblogs.com/chenchen0618/p/11624480.html 1.什么是分库分表 从字面上简单理解,就是将原本存储在一个库的数据分块存储在多个库 ...

  5. Hibernate(四)

    ==================================投影(查询)=============================投影查询:查询一个持久化类的一个或多个属性值    1.将每条 ...

  6. cd命令和roscd命令的区别,并解决环境变量问题

    cd命令和roscd命令都是切换到指定目录的命令.不同的是,cd是Linux系统的命令,在使用时必须指定目标目录的完整路径:而roscd是ros系统中的命令,它可以直接切换到指定目录(ros系统中的软 ...

  7. myeclipse 项目引入 com.sun.image.codec.jpeg 的api报错解决方法

    今天在做压缩图片的功能的时候发现JDK自带的jar找不到的问题,网上找到一个方法,实测可行,这边记录下: 在Eclipse中处理图片,需要引入两个包:   import com.sun.image.c ...

  8. HDU_2571_DP

    http://acm.hdu.edu.cn/showproblem.php?pid=2571 简单dp,从上到下,从左到右依次更新每一格的最大幸运值. #include<iostream> ...

  9. WeChall_Training: Encodings I (Training, Encoding)

    We intercepted this message from one challenger to another, maybe you can find out what they were ta ...

  10. EMC NW NMM to backup MS AG

    To use EMC NW NMM to backup MS SQL always on database, that is a simple and safe way to protector da ...