博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我要学ASP.NET MVC 3.0(十七): MVC 3.0 实例之表格中数据的筛选
阅读量:2386 次
发布时间:2019-05-10

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

概述

         

通过上节的学习,我们知道如何在MVC 3.0应用程序中给简单表格加入排序和分页功能,但是作为开发人员,这些还是不能完美的展现我们的表格的优越性。有时候我们还需要对数据进行筛选处理,然后使用表格进行显示。那么在MVC 3.0中做一个筛选功能又怎么做呢?

这节我们就使用MVC 3.0来筛选数据然后使用表格显示筛选结果。

        

问题分析

         

对于我们的数据集来说,我们要求可以通过输入程序编号、选择成员家族(狼和羊)或者通过其他一些标识型字段来如:婚姻状态等方式来筛选数据。

这样一来使用的参数就显而易见了:

①EmployeeNO查询编号:可以通过输入编号来筛选数据。

②DepartmentID家族编号:可以通过选择家族的列表来筛选数据。

③IsMarital婚姻状态:可以通过选择是否结婚来筛选数据。

   

修改辅助类

        

修改EmployeeGridModel辅助类

加入一下代码

.....................................
///         /// 查询条件:查询编号        ///         public string EmployeeNO { get; set; }        ///         /// 查询条件:是否婚配        ///         public bool IsMarital { get; set; }        ///         /// 查询条件:种族编号        /// 用于绑定DepartmentList        ///         public int? DepartmentID { get; set; }        ///         /// 绑定数据库中的种族集合        ///         public IEnumerable
DepartmentList { get; set; }

  

这些属性值,只是作为页面传递和绑定使用的。

        

创建Action

           

在EmployeeController添加名为Filterable的方法

该方法包含三个参数employeeNO、departmentID和isMarital

代码如下

public ActionResult Filterable(int? employeeNO, int? departmentID, bool? isMarital = null)        {            var model = new EmployeeGridModel()            {                DepartmentID = departmentID,                EmployeeNO = employeeNO.ToString(),                IsMarital = isMarital.HasValue ? isMarital.Value : false,                DepartmentList = this.DataContext.Department                .OrderBy(o => o.DepartName)                .Select(o =>                new SelectListItem                {                    Text = o.DepartName,                    Value = o.DepartmentID.ToString()                }                )            };            var filteredResults = this.DataContext.Employee.AsQueryable();            if (employeeNO != null)                filteredResults = filteredResults.Where(o => o.EmployeeNO == employeeNO.ToString());            if (departmentID > 0)                filteredResults = filteredResults.Where(o => o.DepartmentID == departmentID.ToString());            if (isMarital != null && isMarital.Value == true)                filteredResults = filteredResults.Where(o => o.Marital == "1");            model.Employees = filteredResults;            return View(model);        }

  

首先我们初始化一个辅助类EmployeeGridModel,读取并筛选了数据库中数据之后,为相关属性设置默认值,返回一个辅助类的Employeelist

注意:此处我们的OrderBy可以参照的具体操作,这里就不多赘述。

           

创建视图View

        

为Filterable的Action添加一个视图View,选择强类型为EmployeeGridModel

修改代码为

@model MVC3.Grid.Models.EmployeeGridModel@{    ViewBag.Title = "Filterable";    Layout = "~/Views/Shared/_Layout.cshtml";}

筛选列表

@using (Html.BeginForm("Filterable", "Employee", FormMethod.Get)){
@foreach (var item in Model.Employees) {
}
编号 姓名 性别 生日 是否婚配
@item.EmployeeNO @item.EmployName @item.Sex @string.Format("{0:yyyy年MM月dd日}",item.Birthday) @if (item.Marital == "1") { @:@("是") } @if (item.Marital != "1") { @:@("否") }
}

  

到目前为止,我们的页面基本就做好了,运行起来看看

我们可以看到筛选的条件还没有做,那我们就开始做筛选条件。

      

创建筛选框

    

为Filterable.cshtml添加一个div,作为筛选框,里面添加相关条件

编号: @Html.TextBoxFor(o => o.EmployeeNO, new { size = 8 })
种族: @Html.DropDownListFor(o => o.DepartmentID, Model.DepartmentList, "-- 所有分类 --")
是否婚配: @Html.CheckBoxFor(o => o.IsMarital)

  

运行起来看看

感觉效果有点丑,美化美化。。。

Filterable.cshtml完整代码

@model MVC3.Grid.Models.EmployeeGridModel@{    ViewBag.Title = "Filterable";    Layout = "~/Views/Shared/_Layout.cshtml";}

筛选列表

@using (Html.BeginForm("Filterable", "Employee", FormMethod.Get)){
内容筛选
编号: @Html.TextBoxFor(o => o.EmployeeNO, new { size = 8 })
种族: @Html.DropDownListFor(o => o.DepartmentID, Model.DepartmentList, "-- 所有分类 --")
是否婚配: @Html.CheckBoxFor(o => o.IsMarital)
@foreach (var item in Model.Employees) {
}
编号 姓名 性别 生日 是否婚配
@item.EmployeeNO @item.EmployName @item.Sex @string.Format("{0:yyyy年MM月dd日}", item.Birthday) @if (item.Marital == "1") { @:@("是") } @if (item.Marital != "1") { @:@("否") }
}

  

在Site.css样式表中添加样式

/* Filtering Styles */.filtering {
margin: 15px; padding: 0px 10px 10px 10px; background-color: #ffc;}.filtering legend {
font-weight: bold; font-size: larger;}

  

运行效果

     

大功告成!!!

      

总结

         

作为筛选其实也没有什么特别的难度,只是在辅助类的基础上增加了筛选的字段和选择列表的数据集,然后通过MVC 本事的Get方法指定到Action方法中,传递参数获取筛选结果。显示在界面上。

转载地址:http://mmjab.baihongyu.com/

你可能感兴趣的文章
PHP单例模式应用详解
查看>>
冒号课堂§5.2:数据类型
查看>>
博客搬家
查看>>
冒号课堂§6.2:平台语言
查看>>
《关于信息系统组织方式的一个提案》的评论与反评
查看>>
冒号和他的学生们(连载10)——超级范式
查看>>
冒号和他的学生们(连载9)——泛型范式
查看>>
冒号和他的学生们(连载13)——范式总结
查看>>
A Proposal on Organization of Information System
查看>>
冒号和他的学生们(连载2)——首轮提问
查看>>
正则表达式与文件格式化处理
查看>>
Java EE互联网轻量级框架整合开发
查看>>
Java语言程序设计(基础篇)
查看>>
大型网站技术架构:核心原理与案例分析
查看>>
JAVA并发编程实战
查看>>
RabbitMQ实战++高效部署分布式消息队列
查看>>
微服务设计
查看>>
Spring Cloud微服务实战
查看>>
C++ static 语义
查看>>
C++ static 语义
查看>>