前言

此案例是针对之前做的一个小例子的后台框架的修改,从以前的三层框架改为现在的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. Windows玩转Kubernetes系列3-Centos安装K8S

    以往文章参考: Windows玩转Kubernetes系列1-VirtualBox安装Centos Windows玩转Kubernetes系列2-Centos安装Docker 安装K8S yum in ...

  2. 自学Java第四章——《数组》

    4.1 数组的相关概念和名词(了解) 1.数组(array): 一组具有相同数据类型的数据的按照一定顺序排列的集合. 把有限的几个相同类型的变量使用一个名称来进行统一管理. 2.数组名: (1)这个数 ...

  3. FFMPEG学习----使用SDL播放PCM数据

    参考雷神的代码: /** * 最简单的SDL2播放音频的例子(SDL2播放PCM) * Simplest Audio Play SDL2 (SDL2 play PCM) * * 本程序使用SDL2播放 ...

  4. python3 控制结构知识及范例

    (一)三种基本控制结构 1.顺序结构:按照程序语句编写的顺序依次逐条执行 2.选择结构:根据特定的条件选择某一个分支 3.循环结构:反复执行某个或者某些操作,关注点:在什么情况下,反复执行哪一部分的操 ...

  5. Codeforces_841

    A.统计每个字母数量,比较是否超过k. #include<bits/stdc++.h> using namespace std; ] = {}; string s; int main() ...

  6. CCF_201612-1_最大波动

    http://115.28.138.223/view.page?gpid=T47 水. #include<iostream> #include<cstring> #includ ...

  7. Spring Cloud(六):服务网关zuul

    通过前面几篇文章的介绍,Spring Cloud微服务架构可通过Eureka实现服务注册与发现,通过Ribbon或Feign来实现服务间的负载均衡调用,通过Hystrix来为服务调用提供服务降级.熔断 ...

  8. 11-MyBatis01

    今日知识 1. MyBatis简介 2. MyBatis入门 3. 全局配置文件其他配置 4. MyBatis的映射文件 5. 动态SQL 6. mybatis和hibernate区别 MyBatis ...

  9. 08-JavaScript基础

    今日知识 1. JavaScript基础 2. 案例 3.总结 JavaScript介绍: * 概念:一门客户端脚本语言 * 运行在客户端浏览器中的,每一个浏览器都有JavaScript的解析引擎 * ...

  10. DeBug Python神级工具PySnooper

    安装 pip3 install pysnooper import pysnooper @pysnooper.snoop() def number_to_bits(number): if number: ...