EasyUIWinform开发框架之通用高级查询模块–SNF神速支付平台3.3-Spring.Net.Framework

  近年来项目真正忙,但也是平素劳苦有关项目和框架技术的业务,也直接致力于改良自个儿的WInform开发框架.使得本身及客户选用起来尤其方便,越发团结,越发便捷。

在俯拾就是先后模块中都很广阔,也是给客户扩展查询的一个很好的补偿,由于本身间接期待本人的Winform开发框架能够改良,所以做了那些模块,希望对未来自个儿要好装有的体系以及框架本人,都能快捷的选拔。

一 、通用高级查询模块的用途及介绍

  既然称之为通用查询模块,那么他就无法与具象的表字段有耦合关系,可是要落实具体的查询,必须透过某种情势实行质量传递,达成更直观友好的字段查询功效。高级查询模块,在不少宏观的主次上都会提供,用于知足用户对特定的字段,添加特定的标准化进行,因为一般情况下,由于版面包车型客车界定界面上查询的始末相比简单,只是把一些很广泛、主要的字段作为查询输入,要是表字段相比较多,那么对有些越发的字段就不知道该如何做。

  EasyUI 1

   如这几个程序来讲 字段音信相比较少不鲜明.
做为常用查询的字段一般景况下是无法太多字段的,因为那样页面显示的就会臃肿的可耻。

 
 我的高等级查询查询模块也是遵照那个道理,由此,在主界面增加1个尖端查询按钮入口,如上图所示,单击后,显示四个富有字段的列表,如下界面。

   EasyUI 2

 
看到上边这样是否即熟练又新其呢,新奇是因为过去做的高等级查询是贰个表格第叁列是标题,第贰行是输入的值再开始展览转移。而笔者本次做的是模拟用友的U9产品做的查询方案。即满意对高级查询的急需又扩大了查询方案举办保存。

 
 在介绍输入条件的时候,大家注意到,查询输入,基本上可以分成几类:其一是例行的公文类型,使用文本框控件;其二是表格翻译的列就利用了下拉列表控件举办呈现;其三是日期类型,须要用户钦赐开端日期和完工日期,也就用了自定义日期范围控件(为了有利于,都足以独立输入个中的一部分作为标准举办尖端查询。);其四是数字类型,也是运用的文本框进行格式化,为何不用范围而是能够选用查询的标记,这也是与另外人做高级查询的不一样之处。其五,复选框大家也做了拍卖。

   
查询后会保留用户的输入,第①次打开界面后,会加载从前的输入条件,那样相比较人性化一些。同时可以保存查询方案,供下次登录体系选拔查询方案就足以带出当时查询的尺码,再次查询利用。另能够把询问方案共享给其余人,也能够只本身能观察。

② 、通用高级查询模块的兑现思路

   
有那壹位做的时候就依据表结构照旧视图结构来做的,那样就会有一个限量正是在查询时用的不是表和视图,而是多表关联合检查询,高级查询的字段就会不全了,另原因表的字段很多不必然全体当作查询条件。

   
作者为着接纳更简便易行更便宜而笔者动用了从彰显的内容来获取查询的字段实行处理。

    这样调用起来就很要命的不难,一行代码就解决了。

  string whereSql = this.ShowAdvancedQuery(this.grvGridView);

    1.用传过来的gridView进行解析每一列使用的控件景况。

    

private void ShowQueryControl() 
        {
            foreach (GridColumn gridColumn in GridView.Columns)
            {
                string fieldName = gridColumn.FieldName;
                if (!fieldName.Equals(BusinessLogic.SelectedColumn))
                {
                    string name = gridColumn.Caption;
                    Type type = gridColumn.ColumnType;
                    。。。。。。。。。。
               }
           }
       }    

   2.在上头解析查询字段和控件的时候还亟需查询的号子

   

#region 符号下拉列表
        int txtNotationWidth = 90;
        private ImageComboBoxEdit GetNotationImageComboBoxEdit(string fieldName) 
        {
            ImageComboBoxEdit comboBox = BaseInterfaceLogic.CreateImageComboBoxEdit("cmbNotation" + fieldName, null, null, txtNotationWidth, "Notation");//
            comboBox.Properties.Items.Clear();
            comboBox.Properties.Items.Add(new ImageComboBoxItem("包含", "Like"));
            comboBox.Properties.Items.Add(new ImageComboBoxItem("不包含", "NotLike"));
            comboBox.Properties.Items.Add(new ImageComboBoxItem("左包含", "StartWith"));
            comboBox.Properties.Items.Add(new ImageComboBoxItem("右包含", "EndWith"));

            comboBox.Properties.Items.Add(new ImageComboBoxItem("等于", "Equal"));
            comboBox.Properties.Items.Add(new ImageComboBoxItem("不等于", "NotEqual"));
            comboBox.Properties.Items.Add(new ImageComboBoxItem("大于", "Greater"));
            comboBox.Properties.Items.Add(new ImageComboBoxItem("小于", "Less"));
            comboBox.Properties.Items.Add(new ImageComboBoxItem("大于等于", "GreaterEqual"));
            comboBox.Properties.Items.Add(new ImageComboBoxItem("小于等于", "LessEqual"));
            comboBox.Properties.Items.Add(new ImageComboBoxItem("时间范围", "DateRange"));

            //comboBox.Properties.Items.Add(new ImageComboBoxItem("空", "Null"));
            //comboBox.Properties.Items.Add(new ImageComboBoxItem("非空", "NotNull"));
            //comboBox.Properties.Items.Add(new ImageComboBoxItem("两者之间", "Between"));
            comboBox.SelectedIndex = 0;
            return comboBox;
        }
        #endregion

   3.显示成功后,点击查询后需求从页面控件举办反解析处理

    上边是反解析条件的最主要代码。

foreach (Control control in scrollableControlQuery.Controls)
            {
                if (control is FlowLayoutPanel)
                {
                    panel = (FlowLayoutPanel)control;
                    foreach (Control childControl in panel.Controls)
                    {
                        //05.普通下拉框
                        if (childControl is ImageComboBoxEdit)
                        {}
                    }
                }
          }

   4. 和常见查询功效并存

   
为了使得守旧查询按钮,和高等查询能够并存,大家要求仓储二个高级查询的询问对象,但古板查询的时候,我们把高档查询对象设置为空即可屏蔽高级查询的规则了。

   
在地点代码也足以看出,查询方案点击查询后只会回来组装好的sql条件给了 public
string QueryWhere =
string.Empty;属性。之后想要怎么选取便是先后说的算了。使大家的次序能够尽量满足客户的需要,获得越来越好的反馈和协理了。

    项目中运用完全代码如下:

   

 #region 高级查询事件处理
        /// <summary>
        /// 高级查询事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSearchA_Click(object sender, EventArgs e)
        {
            string whereSql = this.ShowAdvancedQuery(this.grvGridView);
            if (!whereSql.Equals(ShowAdvancedQueryCancel))
            {
                this.Search(whereSql);
            }

        }
        #endregion

 
从下面来看,其实小编本次做的高级查询在同行行业内部是相比不难实用的。而且还扩大了查询方案展开仓库储存。也好不简单行内相比标准的做法了。其余人能够进行效仿了。

 
当然这些查询方案还不满足于明日的效果,之后还要扩充排序规则和出示的栏目控制。


作者: 王春天 2015-10-21
作者Blog:http://www.cnblogs.com/spring_wang
出处: http://www.cnblogs.com/spring_wang/p/4874584.html

  假如觉得还行,欢迎转发。

SNF赶快支付平台框架的数见不鲜文章:

SNF开发平台WinForm之十-Excel导入http://www.cnblogs.com/spring_wang/p/6128604.html

SNF开发平台WinForm之九-代码生成器使用验证http://www.cnblogs.com/spring_wang/p/6128595.html

SNF开发平台WinForm之八-自动升级程序安排使用表明http://www.cnblogs.com/spring_wang/p/6128570.html

SNF开发平台WinForm之七-单据打字与印刷和利用验证http://www.cnblogs.com/spring_wang/p/6126016.html

SNF开发平台WinForm之六-上传下载组件使用http://www.cnblogs.com/spring\_wang/p/6125929.html

SNF开发平台WinForm之五-高级查询利用表明-http://www.cnblogs.com/spring\_wang/p/6116640.html

SNF开发平台WinForm之四-开发-主细表管理页面-http://www.cnblogs.com/spring\_wang/p/6116626.html

SNF开发平台WinForm之三-开发-单表选用控件创立-http://www.cnblogs.com/spring\_wang/p/6116592.html

SNF开发平台WinForm之二-开发-单表表单管理页面-http://www.cnblogs.com/spring\_wang/p/6116572.html

SNF开发平台WinForm之一-开发-单表表格编辑管理页面-http://www.cnblogs.com/spring\_wang/p/6116523.html

Winform开发框架之通用高级查询模块–SNF火速支付平台3.3-Spring.Net.Framework

Winform开发框架之图表报表在线设计器2-图表-SNF.EasyQuery项目–SNF急速支付平台3.3-Spring.Net.Framework

Winform开发框架之图表报表在线设计器-报表-SNF.EasyQuery项目–SNF神速支付平台3.3-Spring.Net.Framework(

Winform开发框架之通用附属类小部件管理模块
–SNF急速支付平台3.3-Spring.Net.Framework

SNFAutoupdater通用自动升级组件V2.0-WinForm

SNF快捷支付平台3.2之–.Net可扩大的契约编号生成器-SNF.CodeRule

SNF快捷支付平台3.1之–审核流(3)低调华侈,简单不凡,实例演示-SNF.WorkFlow

SNF火速支付平台3.1之–审核流(2)流程设计-SNF.WorkFlow功用使用表达

SNF急迅支付平台3.1之–审核流(1)SNF.WorkFlow审核流简介

SNF快捷支付平台3.0之–完美的代码生成器SNF.CodeGenerator-火速开发者的利器

基于MVC4+EasyUI的Web开发框架–Spring.Net.FrameworkV3.0一体化介绍

SNF快捷支付平台3.0之–MVC
打字与印刷解决方案

SNF火速支付平台3.0之–文件批量上传-统一附属类小部件管理器-在线预览文件(有互连网和没有二种)

SNF火速支付平台3.0之–asp.net mvc4
强大的导出和不要求上传文件的批量导入EXCEL

SNF快捷支付平台3.0之MVC通用控件库突显-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout

SNF快捷支付平台3.0之BS页面呈现和九大优点-部分页面显示效果-Asp.net+MVC4.0+WebAPI+EasyUI
+Knockout

SNF飞速支付平台3.0之-界面本性化配置+10种皮肤+7种菜单-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout

SNF连忙支付平台3.0之-CS页面-Asp.net+Spring.Net.Framework

SNF赶快支付平台3.0之–系统里播放的法力–赶快及时、简明扼要的把音信发送给接收者