博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【MVC+EasyUI实例】对数据网格的增删改查(上)
阅读量:6572 次
发布时间:2019-06-24

本文共 4526 字,大约阅读时间需要 15 分钟。

前言
此案例是针对之前做的一个小例子的后台框架的修改,从以前的三层框架改为现在的MVC框架,也是做了一次MVC和EasyUI的结合,分为2篇文章来阐述。
界面如下:
815947-20170718163150646-339947652.png
点击“添加”按钮, 添加产品
815947-20170718163152349-69253079.png
 选中某条信息,修改产品
815947-20170718163153630-1713970254.png
一、导入数据模型
Models文件夹添加实体数据模型,这里使用的是根据数据库生成实体
815947-20170718163154646-1941463828.png
 二、添加控制器
815947-20170718163200052-55186492.png
 三、添加视图
815947-20170718163200630-1979102012.png
四、编写视图的代码
利用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">编&#12288;&#12288;号</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">描&#12288;&#12288;述</label>
  49. <input id="Description" name="Description" class="easyui-validatebox" data-options="required:true" />
  50. </div>
  51. <div class="format">
  52. <label for="Category">品&#12288;&#12288;类</label>
  53. <input id="Category" name="Category" class="easyui-validatebox" data-options="required:true" />
  54. </div>
  55. <div class="format">
  56. <label for="Price">价&#12288;&#12288;格</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. }
到这里,网格的数据加载呈现就写好了。
还剩增删改的功能。
 

转载于:https://www.cnblogs.com/iwsx/p/7201207.html

你可能感兴趣的文章
23种设计模式(1):单例模式
查看>>
socket 编程入门教程(五)UDP原理:4、“有连接”的UDP
查看>>
linux sort 命令详解
查看>>
Jquery获取iframe中的元素
查看>>
Laravel 学习笔记5.3之 Query Builder 源码解析(下)
查看>>
Struts2简单入门实例
查看>>
Android应用及应用管理
查看>>
2012CSDN年度博客之星评选http://vote.blog.csdn.net/item/blogstar/xyz_lmn
查看>>
Linux系统与网络服务管理技术大全(第2版)
查看>>
window下配置定时任务实现类似linux的cron定时任务
查看>>
铁道部否认被中铁工程等十多家公司老总蹲点讨债
查看>>
js事件---事件流
查看>>
我的友情链接
查看>>
谁拿了最多奖学金
查看>>
详解linux运维工程师入门级必备技能
查看>>
我的友情链接
查看>>
PhoneGap在Microsoft Visual Studio Express For Wi...
查看>>
Shell脚本的模块化和脚本复用
查看>>
暴力删除
查看>>
unable to bind to locking port 7054 within 45000 ms
查看>>