1.ListView 添加日期筛选下拉选择,选择指定,可指定日期范围

2.Code

using DevExpress.Data.Filtering;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using DevExpress.ExpressApp.DC;
using DevExpress.ExpressApp.Editors;
using DevExpress.ExpressApp.SystemModule;
using DevExpress.ExpressApp.Templates;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.Validation;
using DevExpress.Xpo;
using DevExpress.XtraPrinting.Native;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;namespace E1554.Module
{public interface ISupportFilterByDate{// PropertiesDateTime Date { get; }}[NonPersistent]public class DateInterval{private DateTime _start;private DateTime _end;public DateTime Start{get{return this._start;}set{this._start = value;bool flag = value > this._end;if (flag){this._end = this._start;}}}public DateTime End{get{return this._end;}set{this._end = value;bool flag = value < this._start;if (flag){this._start = value;}}}}public enum TransactionStatus{[XafDisplayName("Cancelled")]Cancelled = 3,[XafDisplayName("Comlited")]Comlited = 2,[XafDisplayName("Save")]Save = 1}public class CreateDataFilterController : ViewController
{// Fieldsprivate IContainer components = null;private DetailView detailView;private IObjectSpace os;private SingleChoiceAction saFilterByDate;public static int SelectedIndex;// Methodspublic CreateDataFilterController(){this.InitializeComponent();base.RegisterActions(this.components);this.saFilterByDate = new SingleChoiceAction(this, "FilterByDateID", PredefinedCategory.Search);this.saFilterByDate.Category = "Filters";this.saFilterByDate.TargetObjectType = typeof(ISupportFilterByDate);ChoiceActionItem item = new ChoiceActionItem("所有", null) {Id = "All"};this.saFilterByDate.Items.Add(item);item = new ChoiceActionItem("今天", null) {Id = "Today"};this.saFilterByDate.Items.Add(item);item = new ChoiceActionItem("本周", null) {Id = "ThisWeek"};this.saFilterByDate.Items.Add(item);item = new ChoiceActionItem("上周", null){Id = "PrevWeek"};this.saFilterByDate.Items.Add(item);item = new ChoiceActionItem("兩周", null){Id = "TwoWeek"};this.saFilterByDate.Items.Add(item);item = new ChoiceActionItem("本月", null) {Id = "ThisMonth"};this.saFilterByDate.Items.Add(item);item = new ChoiceActionItem("上月", null){Id = "PrevMonth"};this.saFilterByDate.Items.Add(item); //今天,本週,上週,兩週,本月,上月,今年,去年,指定item = new ChoiceActionItem("今年", null) {Id = "ThisYear"};this.saFilterByDate.Items.Add(item);item = new ChoiceActionItem("去年", null) {Id = "PrevYear"};this.saFilterByDate.Items.Add(item);item = new ChoiceActionItem("指定", null) {Id = "DatesInterval"};this.saFilterByDate.Items.Add(item);this.saFilterByDate.Caption = "按日期";this.saFilterByDate.PaintStyle = ActionItemPaintStyle.Caption;this.saFilterByDate.Execute += new SingleChoiceActionExecuteEventHandler(this.saFilterByDate_Execute);base.ViewControlsCreated += new EventHandler(this.CreateDataFilterController_ViewControlsCreated);}private void CreateDataFilterController_Activated(object sender, EventArgs e){this.SetCurrentFilterItem();}private void CreateDataFilterController_ViewControlsCreated(object sender, EventArgs e){this.saFilterByDate.Active.SetItemValue("HIDE_FOR_MONTH_STATISTIC", true);//this.saFilterByDate.Active.SetItemValue("HIDE_FOR_MONTH_STATISTIC", (base.View.Id != "SaleItem_PivotView_ByMonth_Chart_Common") && !(base.View.Id == "SaleItem_Share_ByMonth_Chart_Common"));
    }private void dc_Accepting(object sender, DialogControllerAcceptingEventArgs e){DateInterval currentObject = e.AcceptActionArgs.CurrentObject as DateInterval;ListView view = base.View as ListView;CriteriaOperator @operator = Helper.GetFilterByDates(view.ObjectTypeInfo.Type, currentObject.Start, currentObject.End);if (!view.CollectionSource.Criteria.ContainsKey("DateFilter")){view.CollectionSource.Criteria.Add(new KeyValuePair<string, CriteriaOperator>("DateFilter", @operator));}else{view.CollectionSource.Criteria["DateFilter"] = @operator;}}protected override void Dispose(bool disposing){if (disposing && (this.components != null)){this.components.Dispose();}base.Dispose(disposing);}private void Filter(ChoiceActionItem item, SingleChoiceActionExecuteEventArgs e){bool flag = base.View.Model.GetValue<bool>("UseServerMode");ListView view = base.View as ListView;if ((view != null) && (item != null)){if (item.Id == "DatesInterval"){#region MyRegionthis.os = base.ObjectSpace.CreateNestedObjectSpace();DateInterval interval1 = new DateInterval{Start = DateTime.Now.Date,End = DateTime.Now};this.detailView = base.Application.CreateDetailView(this.os, interval1);this.detailView.ViewEditMode = ViewEditMode.View;this.os.Committed += new EventHandler(this.os_Committed);e.ShowViewParameters.CreatedView = this.detailView;//if (base.Application.GetType().Name == "WinterQueenAspNetApplication")//{//    e.ShowViewParameters.TargetWindow = TargetWindow.NewModalWindow;//}e.ShowViewParameters.Context = TemplateContext.PopupWindow;DialogController controller = base.Application.CreateController<DialogController>();controller.Accepting += new EventHandler<DialogControllerAcceptingEventArgs>(this.dc_Accepting);e.ShowViewParameters.Controllers.Add(controller); #endregion}else{DateTime minValue = DateTime.MinValue;CriteriaOperator left = null;if (item.Id == "All"){view.CollectionSource.Criteria[0] = null;}else{#region MyRegionstring dateFieldStr = "Date";// "CreateOn";#region MyRegionif (item.Id == "Today"){if (view.Model.ModelClass.ShortName == "SaleItem"){left = CriteriaOperator.Parse("[Sale_ID.DateConfirm] >= LocalDateTimeToday()", new object[0]);}else{left = CriteriaOperator.Parse(string.Format("[{0}] >= LocalDateTimeToday()", dateFieldStr), new object[0]);}}if (item.Id == "ThisWeek"){if (view.Model.ModelClass.ShortName == "SaleItem"){left = CriteriaOperator.Parse("[Sale_ID.DateConfirm] >= LocalDateTimeThisWeek()", new object[0]);}else{left = CriteriaOperator.Parse(string.Format("IsThisWeek([{0}])", dateFieldStr), new object[0]);}}if (item.Id == "PrevWeek"){if (view.Model.ModelClass.ShortName == "SaleItem"){left = CriteriaOperator.Parse("[Sale_ID.DateConfirm] >= LocalDateTimeThisWeek()", new object[0]);}else//  IsOutlookIntervalLastWeek
                        {left = CriteriaOperator.Parse(string.Format("IsOutlookIntervalLastWeek([{0}])", dateFieldStr), new object[0]);}}if (item.Id == "TwoWeek"){if (view.Model.ModelClass.ShortName == "SaleItem"){left = CriteriaOperator.Parse("[Sale_ID.DateConfirm] >= LocalDateTimeThisWeek()", new object[0]);}else{left = CriteriaOperator.Parse(string.Format("[{0}] > ADDDAYS(LocalDateTimeToday(), -14) AND [{0}] <LocalDateTimeToday()", dateFieldStr), new object[0]);}}#endregion#region MyRegionif (item.Id == "ThisMonth"){if (view.Model.ModelClass.ShortName == "SaleItem"){left = CriteriaOperator.Parse("[Sale_ID.DateConfirm]>= LocalDateTimeThisMonth()", new object[0]);}else{left = CriteriaOperator.Parse(string.Format("IsThisMonth([{0}])", dateFieldStr), new object[0]);}}if (item.Id == "PrevMonth"){if (view.Model.ModelClass.ShortName == "SaleItem"){left = CriteriaOperator.Parse("[Sale_ID.DateConfirm]>= LocalDateTimeThisMonth()", new object[0]);}else{left = CriteriaOperator.Parse(string.Format("IsThisMonth(AddMonths([{0}],1))", dateFieldStr), new object[0]);}}if (item.Id == "ThisYear"){if (view.Model.ModelClass.ShortName == "SaleItem"){left = CriteriaOperator.Parse("[Sale_ID.DateConfirm]>=LocalDateTimeThisYear()", new object[0]);}else{left = CriteriaOperator.Parse(string.Format("IsThisYear([{0}])", dateFieldStr), new object[0]);}}if (item.Id == "PrevYear"){if (view.Model.ModelClass.ShortName == "SaleItem"){left = CriteriaOperator.Parse("[Sale_ID.DateConfirm]>=LocalDateTimeThisYear()", new object[0]);}else{left = CriteriaOperator.Parse(string.Format("IsThisYear(AddYears([{0}],1))", dateFieldStr), new object[0]);}}//if (item.Id == "PrevMonth")//{//    DateTime time3 = DateTime.Now.AddMonths(-1);//    minValue = new DateTime(time3.Year, time3.Month, 1);//    DateTime time4 = minValue.AddMonths(1);//    if (view.Model.ModelClass.ShortName == "SaleItem")//    {//        object[] parameters = new object[] { minValue, time4 };//        left = CriteriaOperator.Parse("[Sale_ID.DateConfirm]>=? AND [Sale_ID.DateConfirm]<=?", parameters);//    }//    else//    {//        object[] objArray2 = new object[] { minValue, time4 };//        left = CriteriaOperator.Parse("Date>=? AND Date<=?", objArray2);//    }//} #endregionif (view.Model.ModelClass.ShortName == "Sale"){object[] objArray3 = new object[] { TransactionStatus.Comlited };left = CriteriaOperator.And(left, CriteriaOperator.Parse("TransactionStatus=?", objArray3));}if (view.Model.ModelClass.ShortName == "SaleItem"){object[] objArray4 = new object[] { TransactionStatus.Comlited };left = CriteriaOperator.And(left, CriteriaOperator.Parse("Sale_ID.TransactionStatus=?", objArray4));}if (!view.CollectionSource.Criteria.ContainsKey("DateFilter")){view.CollectionSource.Criteria.Add(new KeyValuePair<string, CriteriaOperator>("DateFilter", left));}else{view.CollectionSource.Criteria["DateFilter"] = left;}#endregion}                  }}}private void InitializeComponent(){base.TargetObjectType = typeof(ISupportFilterByDate);base.TargetViewNesting = Nesting.Root;base.TargetViewType = ViewType.ListView;base.TypeOfView = typeof(ListView);base.Activated += new EventHandler(this.CreateDataFilterController_Activated);}private void os_Committed(object sender, EventArgs e){}private void saFilterByDate_Execute(object sender, SingleChoiceActionExecuteEventArgs e){this.Filter(this.saFilterByDate.SelectedItem, e);}private void SetCurrentFilterItem(){        this.saFilterByDate.SelectedIndex = 2;this.Filter(this.saFilterByDate.Items[2], null);}// Propertiespublic SingleChoiceAction FilterByDate{get{return this.saFilterByDate;}}
}public class Helper{// Methodspublic static CriteriaOperator GetFilterByDates(Type obj, DateTime start, DateTime end){CriteriaOperator @operator = null;if (obj.GetInterface("ISupportFilterByDate") != null){object[] parameters = new object[] { start, end };MethodInfo method = obj.GetMethod("GetFilterString");if (method != null){@operator = method.Invoke(null, parameters) as CriteriaOperator;}}return @operator;}}
}

using System;
using DevExpress.Xpo;
using DevExpress.ExpressApp;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Persistent.Validation;
using DevExpress.Data.Filtering;
using DevExpress.ExpressApp.SystemModule;namespace E1554.Module {[DefaultClassOptions]  public class Detail : BaseObject, ISupportFilterByDate{public Detail(Session session) : base(session) { }private string _DetailName;public string DetailName {get { return _DetailName; }set { SetPropertyValue("DetailName", ref _DetailName, value); }}private Master _Master;[Association("Master-Details")]public Master Master {get { return _Master; }set { SetPropertyValue("Master", ref _Master, value); }}private int _Qty;public int Qty{get { return _Qty;}set {int oldQty = _Qty;SetPropertyValue("Qty", ref _Qty, value);if (!IsLoading && !IsSaving && oldQty != _Qty) { mDefaultAddress = Qty.ToString();OnChanged("DefaultAddress");}}}     [Persistent("DefaultAddress")]private string mDefaultAddress=null;[PersistentAlias("mDefaultAddress")]public string DefaultAddress{get{if (!IsLoading && !IsSaving && mDefaultAddress == null)mDefaultAddress = Qty.ToString();return mDefaultAddress;}set { SetPropertyValue("DefaultAddress", ref mDefaultAddress, value); }}private DateTime date;public DateTime Date{get { return date; }set { SetPropertyValue("Date", ref date, value); }}public static CriteriaOperator GetFilterString(DateTime start, DateTime end){return CriteriaOperator.Parse("Date>=? AND Date<=?", new object[]{start,end});}}
}

转载于:https://www.cnblogs.com/Tonyyang/p/5599642.html

[原] XAF 添加日期筛选下拉选择相关推荐

  1. vue 实现日期年月日下拉选择

    代码仅供参考,本人vue打酱油水平,喷子绕行 子组件代码 DateSelect.vue <!-- 日期搜索框 --> <template><div id = " ...

  2. JS实现下拉选择日期,下拉选择年月日

    标签容器 <select id="year_select"></select> <select id="month_select" ...

  3. layui表格下拉选择、日期选择

    一.下拉选择 改动三个地方: 下拉选择模板 数据渲染 下拉选择监听填充数据 //表格 {title: '是否棚改房<span class="titletips">*&l ...

  4. html 输入框联动显示,js下拉选择框与输入框联动实现添加选中值到输入框的方法...

    本文实例讲述了js下拉选择框与输入框联动实现添加选中值到输入框的方法.分享给大家供大家参考.具体如下: 这里演示js下拉选择框与输入框联动,直接添加选中值到输入框中的效果.这种效果相信不少朋友见到过吧 ...

  5. metaBase的字段筛选条件报错问题总结(多字段下拉选择/metaBase中in语句的用法)

    这几天公司在选型报表,我负责metaBase的研究,发现metaBase的多字段下拉选择时候总是报错,如下sql: select * from org_outp_register register w ...

  6. excel中如何添加下拉选择框

    日常办公中,经常会遇到这样的问题,希望其他人员能够在excel中填写特定的值.为了填写的规范性,我们可以将该单元格设置成下拉选择框,让其他人员选择,这样既方便了用户,也可以规范了内容的填写. 以exc ...

  7. Excel筛选下拉菜单的7个快捷键

    筛选下拉菜单(之前Excel 2003中称为"自动筛选")是在对数据进行排序和筛选时非常有用的工具.应用"筛选"后,在数据区域的标题行(顶端行)将显示小下拉图标 ...

  8. layui下拉选择框开启搜索功能后,文本框会将Nbsp显示出来的解决办法

    layui下拉选择框直接在select标签添加lay-search,即可开启搜索功能 <select id="selectCategory" lay-filter=" ...

  9. Bootstrap 表单控件一(单行输入框input,下拉选择框select ,文本域textarea)

    单行输入框,常见的文本输入框,也就是input的type属性值为text.在Bootstrap中使用input时也必须添加type类型,如果没有指定type类型,将无法得到正确的样式,因为Bootst ...

最新文章

  1. csharp DataTable and DataGridView delete a Row
  2. linux 清理内存的c函数,Linux C函数之内存配置函数
  3. 程序人生:写给新入行程序员职业生涯的10条建议
  4. UserWarning: Matplotlib is currently using agg in Object Detection API
  5. css js写在一起 vue_如何把vue2.0 和 animate.css合并在一起使用(详细教程)
  6. FD.io VPP 20.09版本正式发布:往期VPP文章回顾+下载地址+相关链接
  7. VB小技巧 文本框中屏蔽系统右键菜单用自定义菜单代替自带右键菜单
  8. 图像增强︱window7+opencv3.2+keras/theano简单应用(函数解读)
  9. sqlserver 组内排序
  10. Qt编写/注册/使用activex控件
  11. matlab实现参数方程求导(paradiff函数)
  12. vSphere Client 鼠标不能用的问题
  13. Android网络框架选用(示例,已实际运行)Retrofit,okhttp,volley
  14. Linux系统中的EOT和EOF
  15. 注册中心开源方案选型
  16. 验证码(CAPTCHA)
  17. win10控制面板快捷键_你没玩过的全新版本 Win10这些操作你知多少
  18. jieba分词算法总结
  19. 14个纸张破损撕纸特效图片视频模板PR剪辑素材
  20. visio 2007:方向键无法移动图像解决方法

热门文章

  1. WinAPI: midiOutGetNumDevs - 获取 MIDI 输出设备的数目
  2. python用WMI等获取及修改windows系统信息
  3. 封装+构造方法小例子
  4. 和我一起作Tess的windbg lab - Lab3, Memory
  5. 二分查找--AVL查找树
  6. 【正一专栏】读《艾思奇哲学文选第六卷》
  7. MapReduce基础开发context.write注意new text()多出一列的问题
  8. Ubuntu 9.10下Nvidia官方最新190.42显卡驱动安装
  9. 如何求一个数的因数 c语言代码,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
  10. linux 双网卡浮动ip,Linux 双网卡绑定一个IP原理及实现