前言

此案例是针对之前做的一个小例子的后台框架的修改,从以前的三层框架改为现在的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. Plant Simulation打包与分享

    作者:iJonas 本人原创,转载说明出处. 公众号:仿真社区Plant Simulation 关注知乎专栏:iJonas 目录 简介 使用方法 注意 1.简介 很多情况下,我们需要把模型发送给客户. ...

  2. C语言出现 "initializer element is not constant" 错误的原因

    当在全局变量定义一个指针变量,并动态分配内存后,发现竟然编译不过去,并提示 ""initializer element is not constant"": c ...

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

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

  4. CSS绝对定位absolute详解

    转:https://www.jianshu.com/p/a3da5e27d22b     之前介绍过CSS浮动float详解,本篇介绍的绝对定位absolute和浮动float有部分相似性.如果能理解 ...

  5. eclipse新下载,安装和配置

    question1 java11没有jre,无法通过eclipse-inst-win64进行安装 solution Windows 7 64bit 安装jdk i586还是jdk x64?jdk x6 ...

  6. 1. 学习Linux操作系统

    1.熟练使用Linux命令行(鸟哥的Linux私房菜.Linux系统管理技术手册) 2.学会Linux程序设计(UNIX环境高级编程) 3.了解Linux内核机制(深入理解LINUX内核) 4.阅读L ...

  7. gridFS-Nginx的安装与使用

    在使用gridFs的nginx模块时,先确认好你的机器上已经安装好了mongo 首先通过git将最新的gridfs的nginx模块下载到本地 git clone https://github.com/ ...

  8. C#实现读取IPv6 UDP Socket数据,再发送出去

    C#实现读取IPv6 UDP Socket数据,再发送出去. 不知为何,黑框点一下就停止刷新了,再点一下,就继续刷新了. using System; using System.Collections. ...

  9. [RHEL8]安装Docker Problem: package docker-ce-3:19.03.6-3.el7.x86_64 requires containerd.io

    系统环境 # cat /etc/redhat-release Red Hat Enterprise Linux release 8.0 (Ootpa) 安装依赖 # yum install -y yu ...

  10. [Redis-CentOS7]Python操作Redis(十一)

    Python 操作redis #!/usr/bin/env pyhton # coding:utf-8 # @Time : 2020-02-16 21:36 # @Author : LeoShi # ...