• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 灵活掌握Asp.net MVC中GridView的使用方法

灵活掌握Asp.net MVC中GridView的使用方法

作者:天风隼 字体:[增加 减小] 来源:互联网 时间:2017-05-11

天风隼通过本文主要向大家介绍了asp net mvc,asp net mvc 4,asp net mvc 5,精通asp.net mvc 5,精通asp.net mvc 4等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文教程为大家分享了GridView控件的使用方法和具体实现代码,供大家参考,具体内容如下

Models文件下实体类:

 public class Customer
 {
 public int Id { get; set; } 
 public string CompanyName { get; set; } 
 public string ContactTitle { get; set; }
 public string Address { get; set; }
 public string City { get; set; }  
 public string Country { get; set; }
 public string Phone { get; set; }
 public DateTime Founded { get; set; }
 }
</div>

 public class CustomersViewModel

 {
 public IQueryable<Customer> Customers { get; set; }

 public PagingInfo PagingInfo { get; set; }

 public string JsonPagingInfo { get; set; }
 }

</div>
 public static class ExpresssionBuilder
 {
 private static readonly MethodInfo containsMethod = typeof(string).GetMethod("Contains");
 private static readonly MethodInfo startsWithMethod = typeof(string).GetMethod("StartsWith", new Type[] { typeof(string) });
 private static readonly MethodInfo endsWithMethod = typeof(string).GetMethod("EndsWith", new Type[] { typeof(string) });


 public static Expression<Func<T,bool>> GetExpression<T>(IList<FilterObject> filters)
 {
  if (filters.Count == 0)
  return null;

  ParameterExpression param = Expression.Parameter(typeof(T), "t");
  Expression exp = null;

  if (filters.Count == 1)
  exp = GetExpression<T>(param, filters[0]);
  else if (filters.Count == 2)
  exp = GetExpression<T>(param, filters[0], filters[1]);
  else
  {
  while (filters.Count > 0)
  {
   var f1 = filters[0];
   var f2 = filters[1];

   if (exp == null)
   exp = GetExpression<T>(param, filters[0], filters[1]);
   else
   exp = Expression.AndAlso(exp, GetExpression<T>(param, filters[0], filters[1]));

   filters.Remove(f1);
   filters.Remove(f2);

   if (filters.Count == 1)
   {
   exp = Expression.AndAlso(exp, GetExpression<T>(param, filters[0]));
   filters.RemoveAt(0);
   }
  }
  }

  return Expression.Lambda<Func<T, bool>>(exp, param);
 }

 private static Expression GetExpression<T>(ParameterExpression param, FilterObject filter)
 {
  MemberExpression member = Expression.Property(param, filter.Column);
  //ConstantExpression constant = Expression.Constant(filter.Value);

  //新的逻辑来处理可空Decimal和DateTime值
  UnaryExpression constant = null;
  if (member.Type == typeof(Decimal?))
  {
  constant = Expression.Convert(Expression.Constant(Decimal.Parse(filter.Value)) , member.Type);
  }
  else if (member.Type == typeof(DateTime?))
  {
  constant = Expression.Convert(Expression.Constant(DateTime.Parse(filter.Value)), member.Type);
  }
  else
  {
  constant = Expression.Convert(Expression.Constant(filter.Value), member.Type);
  }


  switch (filter.Operator)
  {
  case FilterOperator.Equals:
   return Expression.Equal(member, constant);

  case FilterOperator.GreaterThan:
   return Expression.GreaterThan(member, constant);

  case FilterOperator.GreaterThanOrEqual:
   return Expression.GreaterThanOrEqual(member, constant);

  case FilterOperator.LessThan:
   return Expression.LessThan(member, constant);

  case FilterOperator.LessThanOrEqual:
   return Expression.LessThanOrEqual(member, constant);

  case FilterOperator.Contains:
   return Expression.Call(member, containsMethod, constant);

  case FilterOperator.StartsWith:
   return Expression.Call(member, startsWithMethod, constant);

  case FilterOperator.EndsWith:
   return Expression.Call(member, endsWithMethod, constant);

  case FilterOperator.NotEqual:
   return Expression.Negate(Expression.Equal(member, constant));
  }

  return null;
 }

 private static BinaryExpression GetExpression<T> (ParameterExpression param, FilterObject filter1, FilterObject filter2)
 {
  Expression bin1 = GetExpression<T>(param, filter1);
  Expression bin2 = GetExpression<T>(param, filter2);

  return Expression.AndAlso(bin1, bin2);
 }
 }

</div>

 public class PagingInfo
 {
 public List<int> PageOptions { get; set; }

 public bool ShowPageOptions { get; set; }

 public int TotalItems { get; set; }
 public int ItemsPerPage { get; set; }
 public int CurrentPage { get; set; }

 public int TotalPages
 {
  get { return (int)Math.Ceiling((decimal)TotalItems / (ItemsPerPage != 0 ? ItemsPerPage : 1)); }
 }

 public SortObject Sort { get; set; }

 public IList<FilterObject> Filters { get; set; }

 public string SearchTerm { get; set; }
 }

 public class SortObject
 {
 public String SortColumn { get; set; }

 public SortDirection Direction { get; set; }
 }

 public class FilterObject
 {
 public string Column { get; set; } 

 public string Value { get; set; }

 public FilterOperator Operator { get; set; }

 public FilterConjunction Conjunction { get; set; }
 }


 /********* ENUMS *************/
 public enum SortDirection
 {
 NotSet,
 Ascending,
 Descending
 }

 public enum FilterOperator
 {
 Contains,
 GreaterThan,
 GreaterThanOrEqual,
 LessThan,
 LessThanOrEqual,
 StartsWith,
 EndsWith,
 Equals,
 NotEqual
 }

 public enum FilterConjunction
 {
 And,
 Or
 }

 public class Extensions
 {
 public static string GetWhereClause(FilterObject filterObj, Type valueType)
 {  
  string whereClause = "true";
  if (valueType != typeof (DateTime))
  {
  switch (filterObj.Operator)
  {
   case FilterOperator.Contains:
   if (valueType == typeof (string))
    whereClause += string.Format(" {0} {1}.Contains(\"{2}\")", filterObj.Conjunction,
    filterObj.Column, filterObj.Value);
   break;
   case FilterOperator.GreaterThan:
   if (valueType != typeof (string))
    whereClause += string.Format(" {0} {1} > {2}", filterObj.Conjunction, filterObj.Column,
    filterObj.Value);
   break;
   case FilterOperator.GreaterThanOrEqual:
   if (valueType != typeof (string))
    whereClause += string.Format(" {0} {1} >= {2}", filterObj.Conjunction, filterObj.Column,
    filterObj.Value);
   break;
   case FilterOperator.LessThan:
   if (valueType != typeof (string))
    whereClause += string.Format(" {0} {1} < {2}", filterObj.Conjunction, filterObj.Column,
    filterObj.Value);
   break;
   case FilterOperator.LessThanOrEqual:
   if (valueType != typeof (string))
    whereClause += string.Format(" {0} {1} <= {2}", filterObj.Conjunction, filterObj.Column,
    filterObj.Value);
   break;
   case FilterOperator.StartsWith:
   if (valueType != typeof (string))
    whereClause += string.Format(" {0} {1}.StartsWith(\"{2}\")", filterObj.Conjunction,
    filterObj.Column, filterObj.Value);
   break;
   case FilterOperator.EndsWith:
   if (valueType != typeof (string))
    whereClause += string.Format(" {0} {1}.EndsWith(\"{2}\")", filterObj.Conjunction,
    filterObj.Column, filterObj.Value);
   break;
   case FilterOperator.Equals:

   whereClause +=
    string.Format(valueType == typeof (string) ? " {0} {1} == \"{2}\"" : " {0} {1} == {2}",
    filterObj.Conjunction, filterObj.Column, filterObj.Value);
   break;
   case FilterOperator.NotEqual:

   whereClause +=
    string.Format(valueType == typeof (string) ? " {0} {1} != \"{2}\"" : " {0} {1} != {2}",
    filterObj.Conjunction, filterObj.Column, filterObj.Value);
   break;
   default:
   throw new ArgumentOutOfRangeException();
  }
  }
  else
  {
  DateTime dt;
  DateTime.TryParse(filterObj.Value, out dt);

  switch (filterObj.Operator)
  {
   case FilterOperator.Contains:   
   break;
   case FilterOperator.GreaterThan:

    whereClause += string.Format(



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解ASP.NET MVC 常用扩展点:过滤器、模型绑定
  • ASP.NET MVC从视图传参到控制器的几种形式
  • ASP.NET MVC 4 中的JSON数据交互的方法
  • ASP.NET MVC制作404跳转实例(非302和200)
  • 详解ASP.NET MVC 利用Razor引擎生成静态页
  • 详解ASP.NET MVC 解析模板生成静态页(RazorEngine)
  • ASP.NET MVC4 利用uploadify.js多文件上传
  • ASP.NET mvc4中的过滤器的使用
  • Asp.net MVC下使用Bundle合并、压缩js与css文件详解
  • 详解Asp.Net MVC——控制器与动作(Controller And Action)

相关文章

  • 2017-05-11asp.net 获取目录下的文件数和文件夹数
  • 2017-05-11Asp.net调试的一些问题小结
  • 2017-05-11Asp.net实现无刷新调用后台实体类数据并以Json格式返回
  • 2017-05-11asp.net下将纯真IP数据导入数据库中的代码
  • 2018-08-20.Net Core项目如何添加日志功能详解
  • 2018-08-20.NET Core系列之MemoryCache 缓存过期
  • 2017-05-11HTTP协议下用Web Service上传大文件的解决方案
  • 2017-05-11log4net创建系统日志的详细步骤
  • 2017-05-11解读ASP.NET 5 & MVC6系列教程(13):TagHelper
  • 2017-05-11asp.net服务器上几种常见异常的解决方案.

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net源程序编译为dll文件并调用的实现过程
    • 管理员登录设计(第7节)
    • asp.net性能优化之使用Redis缓存(入门)
    • MVC、MVP和MVVM分别是什么_动力节点Java学院整理
    • asp.net(c#)网页跳转七种方法小结
    • 网页(aspx)与用户控件(ascx)交互逻辑处理实现
    • a.sp.net清除ListBox的列表项(删除所有项目)
    • .NET客户端实现Redis中的管道(PipeLine)与事物(Transactions)
    • asp.net 多数据库支持的思考
    • asp.net 计算字符串中各个字符串出现的次数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有