任何系统都不可避免的就是数据的查询展示,我觉得这里最值得一说的就是分部视图以及数据分页了

首先添加控制器

在控制其上面的名字为Index的Action上面右击,添加视图即可添加对应的视图,分部视图呈现是要进行分页展示的数据,可以先添加上,添加的方法是同添加视图,只不过把添加分布式图的复选框选中即可

MVC的页面可以通过Model来进行传值,当然也不尽人意,当页面比较复杂的时候,页面需要的信息可能是联合了多张表的信息,当然了我们可以把其中一张表的信息通过Model来传递,而其他的信息通过ViewBag /ViewData来传递数据,但这样能会哦造成效率的底下,所以我在这里建议当页面需要的信息是多张表的信息的时候,我们可以给页面传递一个ViewModel(自定义的Model,包含我们所需要的各个字段信息)

View页面引用命名空间的方法

  1. @using Webdiyer.WebControls.Mvc

上面的命名空间是我们接下来用到分分页控件锁要引用的,这里锁用到的分页控件是

Webdiyer

参考地址:http://www.cnblogs.com/webdiyer/archive/2013/04/23/aspnetpager_743.html

引用分布视图

  1. @Html.Partial("Partial_ListView", Model)

分布式图所需传入的参数是PagedList<>类型的 所以我的Model类型是

  1. @model PagedList<GM360_REWARD_Model.ViewModels.Reward_Sale_Bad>

这样分布式图的代码

  1. @model PagedList<GM360_REWARD_Model.ViewModels.Reward_Sale_Bad>
  2. @using Webdiyer.WebControls.Mvc
  3.  
  4. <div id="dvOrders">
  5. <span style="color: red; margin-left: 240px">全职销售人员当月实发奖金为当月奖金的80%,剩余20%年底奖金,兼职销售人员当月实发奖金为当月奖金的100%,无年底奖金</span>
  6. <table id="tdContent" width="100%" cellpadding="" cellspacing="" border="" class="table_head">
  7. <tr>
  8. <th width="10%">销售员 </th>
  9. <th width="10%">记账月份 </th>
  10. <th align="right" width="8%">当月实发奖金</th>
  11. <th align="right" width="8%">年底应发奖金 </th>
  12. <th width="14%">详情 </th>
  13. </tr>
  14. @{if (Model != null)
  15. {
  16. foreach (var rewardModel in Model)
  17. {
  18. decimal monthReard = string.IsNullOrEmpty(rewardModel.monthReward.ToString()) ? 0m : (decimal)rewardModel.monthReward;
  19. if (monthReard > )
  20. {
  21. if (rewardModel.SalesmanType)
  22. {
  23. <tr>
  24. <td align="center">@rewardModel.Salesman</td>
  25. <td align="center">@rewardModel.inputDate</td>
  26. <td align="right">@(string.Format("{0:N}", rewardModel.monthReward * (decimal)rewardModel.Preace))</td>
  27. <td align="right">@(string.Format("{0:N}", rewardModel.monthReward * (decimal)( - rewardModel.Preace)))</td>
  28. <td align="center"><a href="/InqueryReward/Index/@rewardModel.RewardId/@(rewardModel.monthReward * (decimal)rewardModel.Preace)">详情</a></td>
  29. </tr>
  30. }
  31. else
  32. {
  33. <tr>
  34. <td align="center">@rewardModel.Salesman</td>
  35. <td align="center">@rewardModel.inputDate</td>
  36. <td align="right">@(string.Format("{0:N}", rewardModel.monthReward))</td>
  37. <td align="right">0.00</td>
  38. <td align="center"><a href="/InqueryReward/Index/@rewardModel.RewardId/@rewardModel.monthReward">详情</a></td>
  39. </tr>
  40. }
  41. }
  42. else
  43. {
  44. <tr>
  45. <td align="center">@rewardModel.Salesman</td>
  46. <td align="center">@rewardModel.inputDate</td>
  47. <td align="right">@(string.Format("{0:N}", rewardModel.monthReward))</td>
  48. <td align="right">0.00</td>
  49. <td align="center"><a href="/InqueryReward/Index/@rewardModel.RewardId/@rewardModel.monthReward">详情</a></td>
  50. </tr>
  51. }
  52. }
  53. }
  54. }
  55. </table>
  56. @Html.AjaxPager(Model, new PagerOptions
  57. {
  58. PageIndexParameterName = "id",
  59. CssClass = "pages",
  60. ShowPageIndexBox = false
  61. }, new AjaxOptions() { UpdateTargetId = "dvOrders" })
  62. </div>

这是展示数据的部分,因为业务逻辑比较复杂这里就不仔细说了,在页面的Js部分还有AJAX传递参数查询的部分,

  1. $("#btnQuery").click(function () {
  2. var _year = $("#SelYear option:selected").val();
  3. var _month = $("#SelMon option:selected").val();
  4. var saler = $("#ddlSale option:selected").val();
  5. $.ajax({
  6. url: '/InqueryAllReward/GetDetial/',
  7. data: { 'year': _year, 'month': _month, 'name': saler },
  8. type: 'get',
  9. success: function (data) {
  10. $("#_content").html(data);
  11. },
  12. error: function () { alert("failed"); }
  13. })
  14. })

通过Ajax将查询需要的参数传递给了对应的Action里,通过Action返回值加载到页面

  1. [HttpGet]
  2. public PartialViewResult GetDetial(int? id)
  3. {
  4. string year = Request["year"];
  5. string month = Request["month"];
  6. string name = Request["name"];
  7. string date = year + month;
  8. if (name == "" && year == "" && month == "")
  9. {
  10. _list = BaseHandler.GetData("service/InqueryAllReward/GetFinallReward").ToModel<List<Reward_Sale_Bad>>();
  11. _result = new PagedList<Reward_Sale_Bad>(_list, id ?? , );
  12. result = CalReward(_result);
  13. }
  14. else if (name != "" && year == "" && month == "")
  15. {
  16. _list = BaseHandler.GetData("service/InqueryAllReward/GetFinallReward", name).ToModel<List<Reward_Sale_Bad>>();
  17. _result = new PagedList<Reward_Sale_Bad>(_list, id ?? , );
  18. result = CalReward(_result);
  19. }
  20. else if (name == "" && year != "")
  21. {
  22. _list = BaseHandler.GetData("service/InqueryAllReward/GetFinallRewardByDate", date).ToModel<List<Reward_Sale_Bad>>();
  23. _result = new PagedList<Reward_Sale_Bad>(_list, id ?? , );
  24. result = CalReward(_result);
  25. }
  26. else
  27. {
  28. _list = BaseHandler.GetData("service/InqueryAllReward/GetFinallRewardList", "{'name':'" + name + "','date':'" + date + "'}").ToModel<List<Reward_Sale_Bad>>();
  29. _result = new PagedList<Reward_Sale_Bad>(_list, id ?? , );
  30. result = CalReward(_result);
  31. }
  32. return PartialView("Partial_ListView", result);
  33. }

好了数据查询就这样告了一段落了,说起来很简单,但做起来有很多的细节问题会没有注意到,开始的时候没有用分页控件,用的是自己写的一个Html扩展程序,结果查询的是假分页,而且不能保留查询条件,后来又全部拆了重来

MVC4.0系统开发新手历程(四)数据列表查询的更多相关文章

  1. MVC4.0系统开发新手历程1

    MVC4.0系统开发新手历程(一) 接手了一个简单的销售奖金计算的项目,虽然不算大但是业务逻辑比较复杂,还夹杂了很多的特殊情况,毕竟是大公司什么样的人都有,好了不多说切入正题,项目是公司的一个前辈负责 ...

  2. MVC4.0系统开发新手历程(一)

    接手了一个简单的销售奖金计算的项目,虽然不算大但是业务逻辑比较复杂,还夹杂了很多的特殊情况,毕竟是大公司什么样的人都有,好了不多说切入正题,项目是公司的一个前辈负责的,在他做系统架构的时候让我们了解下 ...

  3. MVC4.0系统开发新手历程(三)---数据导入计算

      数据导入计算 数据的重要意义就不需要我多说了吧,本项目中的数据来源是来自荆艺系统(熟悉物流报关的朋友应该知道)导出的一张Excel,包含了一段时间内整个公司所有销售的全部记录,保密级别那是杠杠的, ...

  4. MVC4.0系统开发新手历程(二)

    登录页 首先声明登录页不是我开发完成的 所以就简单的发下供大家参考 思路:由于是奖金系统,里面涉及到Money,所以在验证方面上下了很大的功夫,我看了下 主要的思想是 获取到那几个人会用到这个系统,然 ...

  5. 从0系统学Android--3.2四种基本布局

    从0系统学Android--3.2四种基本布局 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.3 系统控件不够用?创建自定义控件 上一节我们学习了 Android 中的一些常用的控件 ...

  6. UWP开发必备:常用数据列表控件汇总比较

    今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...

  7. C#手机充值系统开发(基于聚合数据)

    说是手机充值系统有点装了,其实就是调用了聚合数据的支付接口,其实挺简单的事 但是我发现博客园竟然没有类似文章,我就个出头鸟把我的代码贡献出来吧 首先说准备工作: 去聚合数据申请账号-添加手机支付的认证 ...

  8. 从0系统学Android-2.6Activity间数据传递

    本系列文章,参考<第一行代码>,作为个人笔记 更多内容:更多精品文章分类 2.3.4 向下一个 Activity 传递数据 前面学习了使用 Intent 来启动一个 Activity ,其 ...

  9. SNF软件开发机器人-子系统-功能-数据列表分页与不分页-瀑布式分页-如何配置?

    [列表]分页 1.效果展示: (1)不分页 (2)普通分页 (3)瀑布式分页 2.使用说明: 打开显示页面,点击开发者选项的简单配置按钮.在功能表信息中选择需要的分页方式.普通分页和瀑布式分页需要配合 ...

随机推荐

  1. C++Memset误区

    Memset的原型是void *memset(void *s, char ch, size_t n); Memset是按字节赋值的,对char以外的类型赋0(00000000) -1(11111111 ...

  2. libvirtsAPI

    mongodb远程服务器连接 mongo -uroot -p321 master.puppet.org:27017/admin

  3. linux下的java远程调试jpda+tomcat

    项目放到linux服务器了,服务器的环境或者数据可能和我们本地不一样,这个时候我们可能需要远程的断点进行调试,来查看请求过程中的各个变量的值.这里我们的应用服务器用的tomcat5.5.17 这个时候 ...

  4. solr索引

    solr索引 当我们真正进入到Lucene源代码之中的时候,我们会发现: • Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程. • Lucene的搜索过程,就是按照此 ...

  5. hdu 4841 圆桌问题(STL vector)

    Problem Description 圆桌上围坐着2n个人.其中n个人是好人,另外n个人是坏人.如果从第一个人开始数数,数到第m个人,则立即处死该人:然后从被处死的人之后开始数数,再将数到的第m个人 ...

  6. X Shell 4配色方案[Solarized Dark]

    X Shell 4是个很好的Windows下登录Linux服务器的终端,比Putty好用 X Shell 4的下面这种方案,我个人很喜欢 用vim写shell脚本的效果: 按如下步骤配置: 1)把下面 ...

  7. Weka算法Clusterers-DBSCAN源代码分析

    假设说世界上仅仅能存在一种基于密度的聚类算法的话.那么它必须是DBSCAN(Density-based spatial clustering of applications with noise).D ...

  8. Android事件处理之多点触摸与手势识别

    一.Muilti-touch 双指缩放的实现探索: 首先要实现OnTouchListener接口,然后重写方法: public boolean onTouch(View v, MotionEvent ...

  9. Hadoop-2.2.0中文文档—— Common - CLI MiniCluster

    目的 使用 CLI MiniCluster, 用户能够简单地仅仅用一个命令就启动或关闭一个单一节点的Hadoop集群,不须要设置不论什么环境变量或管理配置文件. CLI MiniCluster 同一时 ...

  10. wpf-DataTemplate应用

    在WPF中,决定数据外观的是DataTemplate,即DataTemplate是数据内容的表现形式,一条数据显示成什么样子,是简单的文本还是直观的图形,就是由DataTemplate决定的.下面通过 ...