本文主要来体验在搜索区域增加更多的搜索条件,主要包括:

※ 使用jQuery ui的datepicker显示时间,设置显示格式、样式。
※ 设置jQuery ui的onClose事件,使开始和结束时间形成约束,即选择开始时间为某天,结束时间的选择范围只能在该天以后,反之亦然。
※ 下拉框显示枚举值

本文只关注视图显示,不涉及后台逻辑。关于搜索条件的过滤,请参照"datagrid在MVC中的运用02"。

关于显示时间

□ Html

 <!--搜索开始--> 
    <div id="tb" style="padding:3px">        
        时间从:<input type="text" name="joinStartTime" id="joinStartTime" /> 
        到:<input type="text" name="joinEndTime" id="joinEndTime" /> 
        <a href="#" class="easyui-linkbutton" plain="false" id="btnQuery">搜索</a> 
    </div> 
    <!--搜索结束-->

□ js部分

    <link href="~/Content/themes/base/jquery.ui.all.css" rel="stylesheet" /> 
    <link href="~/Content/themes/default/easyui.css" rel="stylesheet" /> 
    <link href="~/Content/themes/icon.css" rel="stylesheet" /> 
    
    <script src="~/Scripts/jquery-1.10.2.js"></script> 
    <script src="~/Scripts/jquery.easyui.min.js"></script> 
    <script src="~/Scripts/easyui-lang-zh_CN.js"></script> 
    
    <script src="~/Scripts/jquery.ui.core.min.js"></script> 
    <script src="~/Scripts/jquery.ui.datepicker.min.js"></script> 
    <script src="~/Scripts/jquery.ui.datepicker-zh-CN.js"></script> 
    <script type="text/javascript"> 
        $(function() { 
            //限制起始时间 
            fromDateToDate(); 
        });
 
       
        //起始日期 
        function fromDateToDate() { 
            $('#joinStartTime').datepicker({ 
                dateFormat: "yy-mm-dd", 
                changeMonth: true, 
                changeYear: true, 
                numberOfMonths: 2, 
                onClose: function (selectedDate) { 
                    $("#joinEndTime").datepicker("option", "minDate", selectedDate); 
                } 
            });
 
            $('#joinEndTime').datepicker({ 
                dateFormat: "yy-mm-dd", 
                changeMonth: true, 
                changeYear: true, 
                numberOfMonths: 2, 
                onClose: function (selectedDate) { 
                    $("#joinStartTime").datepicker("option", "maxDate", selectedDate); 
                } 
            }); 
        }
 
    </script>    
 

注意:
datepicker在显示年份月份的时候,显示时间界面有撑开的情况。可以找到jquery.ui.datepicker.css文件,修改其中的i-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 40%;}属性。

效果一:选择开始时间为某天,结束时间的的选择范围在该天以后

效果二:选择结束时间为某天,开始时间的选择范围在该天以前

视图下拉框显示枚举值

□ 创建枚举

public enum StatusEnum
    {
        Enabled = 0,
        Disabled = 1
    }

□ 考虑到下拉框需要显示中文,我们可以在枚举成员字段打上自定义系统属性,然后利用反射来读取自定义系统属性类的某属性。自定义系统属性如下:

using System; 
namespace DataGridInMvc.Helper 
{ 
    /// <summary> 
    /// 打到Enum字段上的自定义系统属性 
    /// </summary> 
    public class EnumDisplayNameAttribute : Attribute 
    { 
        private string _displayName; 
        public EnumDisplayNameAttribute(string displayName) 
        { 
            _displayName = displayName; 
        }
 
        public string DisplayName 
        { 
            get 
            { 
                return _displayName; 
            } 
        } 
    } 
}
 

□ 把自定义系统属性打到枚举成员上

using DataGridInMvc.Helper; 
namespace DataGridInMvc.Models 
{ 
    public enum StatusEnum 
    { 
        [EnumDisplayName("启用")] 
        Enabled = 0, 
        [EnumDisplayName("禁用")] 
        Disabled = 1 
    } 
}

□ 自定义枚举扩展类

主要完成以下使命:
1、前台Html.DropDownList需要List<SelectListItem>源,所以自定义枚举扩展类需要方法返回List<SelectListItem>。
2、把枚举中的自定义系统属性反射出来作为 SelectListItem的Text属性值。

展开using System;
using System.Collections.Generic;
using System.Reflection;
using System.Web.Mvc; namespace DataGridInMvc.Helper
{
/// <summary>
/// 把枚举转换成SelectListItem
/// </summary>
public class EnumExt
{
/// <summary>
/// 获取枚举成员的自定义Attribute的一个属性值
/// </summary>
/// <param name="e">枚举成员</param>
/// <returns></returns>
public static string GetEnumDescription(object e)
{
//获取枚举成员的Type对象
Type t = e.GetType(); //获取Type对象的所有字段
FieldInfo[] ms = t.GetFields(); //遍历所有字段
foreach (FieldInfo f in ms)
{
//如果当前所遍历字段的名称和枚举成员名称不一致,就跳出本次循环
if (f.Name != e.ToString())
{
continue;
} //判断当前所遍历字段中是否包含自定义系统属性
if (f.IsDefined(typeof(EnumDisplayNameAttribute), true))
{
//从当前所遍历字段中获取自定义系统属性,并根据自定义系统属性拿到它的属性值DisplayName,并返回
if (f.GetCustomAttributes(typeof(EnumDisplayNameAttribute), true) != null)
{
return (f.GetCustomAttributes(typeof(EnumDisplayNameAttribute), true)[0] as EnumDisplayNameAttribute).DisplayName;
} }
}
//如果以上失败就返回枚举成员的名称,比如Disabled
return e.ToString();
} //List<SelectListItem>正是前台视图所需要的集合
public static List<SelectListItem> GetSelectList(Type enumType)
{
List<SelectListItem> selectList = new List<SelectListItem>();
selectList.Add(new SelectListItem {Text = "--请选择--", Value = ""});
//通过Enum.GetValues(enumType)获取到的是Dictionary<int, value>键值集合
//key=0,value=Enabled类似这样的键值对
//(int)e 实际上拿到的就是key
foreach (object e in Enum.GetValues(enumType))
{
selectList.Add(new SelectListItem {Text = GetEnumDescription(e), Value = ((int) e).ToString()});
}
return selectList;
} }
}

□ 控制器

        public ActionResult Index() 
        { 
            ViewData["s"] = EnumExt.GetSelectList(typeof (StatusEnum)); 
            return View(); 
        }

□ 视图

    <!--搜索开始--> 
    <div id="tb" style="padding:3px">        
        时间从:<input type="text" name="joinStartTime" id="joinStartTime" /> 
        到:<input type="text" name="joinEndTime" id="joinEndTime" /> 
        状态:@Html.DropDownList("ss",(List<SelectListItem>)ViewData["s"]); 
        <a href="#" class="easyui-linkbutton" plain="false" id="btnQuery">搜索</a> 
    </div> 
    <!--搜索结束--> 

□ 效果

datagrid在MVC中的运用05-加入时间搜索条件,枚举填充下拉框的更多相关文章

  1. ASP.NET MVC 中枚举生成下拉框

    最近公司在开发财务系统,在工作中遇到不少的地方需要下拉框. 但是枚举框中数据的内容又来自枚举. 枚举代码如下: public class EnumDemo { public enum Value { ...

  2. datagrid在MVC中的运用02-结合搜索

    本文接着上一篇,来体验给datagrid加上搜索功能.主要涉及到: ※ 把一个div与datagrid相关起来 ※ datagrid接收查询参数 ※ 查询参数的封装 效果图: 查询参数封装 分页相关的 ...

  3. JavaScript向select下拉框中加入和删除元素

    JavaScript向select下拉框中加入和删除元素 1.说明 a   利用append()方法向下拉框中加入元素 b   利用remove()方法移除下拉框中最后一个元素 2.设计源代码 < ...

  4. datagrid在MVC中的运用01-基本属性并实现分页

    本文体验jQuery EasyUI的datagrid在MVC中的应用.主要涉及到: ※ datagrid的基本属性和方法 ※ datagrid分页在前后台的实现 最终效果: 与视图显示对应的view ...

  5. MVC 中的@Html.DropDownList下拉框的使用

    MVC 中的下拉框 实现方式,下面为大家介绍一个我自己认为比较好用的实现方式,而二话不说直接上代码: 第一步: 后台代码 //公共的方法 //在每次需要展示下拉框的时候,需要调用一下这个方法 [数据源 ...

  6. ASP.NET MVC中的cshtml页面中的下拉框的使用

    ASP.NET MVC中的cshtml页面中的下拉框的使用 用上@Html.DropDownList 先记下来..以做备忘...

  7. 实现在easyui中的datagrid,点击某一列的列头弹出combobox下拉框

    easyUI  datagrid在列头加下拉框,实现对列内容的筛选. 代码: onLoadSuccess: function (data) {//Fires when data is loaded s ...

  8. jQuery Ajax MVC 下拉框联动

    无刷新下拉框联动方法: Controllers代码 public JsonResult DH_Change(string DH_ID) { List<SelectListItem> Tea ...

  9. 用MVC的辅助方法自定义了两个控件:“可编辑的下拉框控件”和“文本框日历控件”

    接触MVC也没多长时间,一开始学的时候绝得MVC结构比较清晰.后来入了门具体操作下来感觉MVC控件怎么这么少还不可以像ASP.net form那样拖拽.这样设计界面来,想我种以前没学过JS,Jquer ...

随机推荐

  1. HDU 3613 Best Reward(扩展KMP求前后缀回文串)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3613 题目大意: 大意就是将字符串s分成两部分子串,若子串是回文串则需计算价值,否则价值为0,求分割 ...

  2. Centos之目录处理命令

    linux中 关于目录 有几个重要概念 一个是 / 根目录  还有一个当前用户的家目录 比如 root用户的家目录是 /root  普通用户的家目录是/home/xxx 下 root登录 默认家目录 ...

  3. 为GHOST远控添加ROOTKIT功能

    原版的ghost远控似乎有一个SSDT HOOK功能的模块,当然已经没有什么用处了.这里在GHOST的基础上添加一些ROOTKIT功能.而且随着x64下主动防御技术的发展,这里不打算使用传统的HOOK ...

  4. FlumeNG介绍及安装部署

    本节内容: Flume简介 Flume NG核心组件 Flume部署种类 Flume单机安装 一.Flume简介 Flume是一个分布式.可靠.高可用的海量日志聚合系统,支持在系统中定制各类数据发送方 ...

  5. Cannot read property ‘msie’ of undefined错误原因以及解决方案

    最近把一个项目的jQuery升级到最新版,发现有些页面报错Cannot read property ‘msie’ of undefined.上jQuery网站上搜了一下,$.browser这个api从 ...

  6. LoadRunner如何获得参数化中每个关键字的搜索响应时间

    LoadRunner如何获得参数化中每个关键字的搜索响应时间 在测试搜索引擎时我们一般采用大量的搜索关键字,有时有必要了解在并发访问的情况下每个关键字的响应时间,一般如果不对脚本进行处理的话你可以获得 ...

  7. HBase结合MapReduce批量导入(HDFS中的数据导入到HBase)

    HBase结合MapReduce批量导入 package hbase; import java.text.SimpleDateFormat; import java.util.Date; import ...

  8. Inno Setup使用

    Inno Setup是一个开源的安装包打包软件,下载地址是:http://www.jrsoftware.org/isdl.php 使用引导界面创建一个安装包打包 配置参考官方文档:http://www ...

  9. spring中的scope详解

    spring容器中的bean默认是单例模式的,改成非单例模式需要在类上加上@Scope("prototype") 1. scope概论 spring中scope是一个非常关键的概念 ...

  10. keystone 认证深度研究分析

    一.Keystone Token深度概述 Keystone作为OpenStack项目基础认证模块,目前支持的token类型分别是uuid.pkiz.pki.fernet. 首先,简要叙述一下这四种类型 ...