前言

此案例是针对之前做的一个小例子的后台框架的修改,从以前的三层框架改为现在的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. MGR安装

    二.环境准备 主机名 IP地址 角色 node2.com 172.16.8.101 primary node3.com 172.16.8.53 seconde node3.com 172.16.8.6 ...

  2. Leetcode 题目整理-6 Swap Nodes in Pairs & Remove Duplicates from Sorted Array

    24. Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and return its head. For ...

  3. Linux防火墙之iptables常用扩展匹配条件(一)

    上一篇博文讲了iptables的基本匹配条件和隐式匹配条件,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12269717.html:今天在来说说iptabel ...

  4. 《快乐编程大本营》java语言训练班 3课:java的运算符

    第1节. 算术运算符 第2节. 递增和递减运算符 第3节. 比较运算符 第4节. 逻辑运算符 第5节. 运算符优先级 第6节. 字符串运算 http://code6g.com/pxphp/px/ban ...

  5. SQL Server 常用的数据类型

    1. 字符串数据类型    char        此数据类型可存储1~8000个定长字符串,字符串长度在创建时指定:如未指定,默认为char(1).每个字符占用1byte存储空间.    nchar ...

  6. C++标准模板库(STL)学习笔记

    C++标准模板库(STL) 一.vector(变长数组) 1.使用vector #include <vector> using namespace std; 2.vector的定义 vec ...

  7. Codeforces_818

    A.winners总数为(k+1)diplomas. #include<bits/stdc++.h> using namespace std; long long n,k; int mai ...

  8. oracle面试基础

    . 对于一个存在系统性能的系统,说出你的诊断处理思路 ). 做statspack收集系统相关信息 了解系统大致情况/确定是否存在参数设置不合适的地方/查看top event/查看top sql等 ). ...

  9. ansible----sudo

    ansible 执行sudo的root命令,参看https://www.cnblogs.com/infaaf/p/10049896.html [nnn]103 ansible_ssh_host=10. ...

  10. Java也疯狂-分享利用ffmpeg做视频转换的工具

    朋友需要经常将视频统一转换为mp4格式,市面上的工具很多,但是转换的体积.自动化程度等都不好,于是花了一个小时给朋友写了个给予ffmpeg的批量转换工具,功能简单但是很实用,也正好给学习Java的同学 ...