WINFORM 多条件动态查询 通用代码的设计与实现

时间:2023-03-08 20:18:33
WINFORM 多条件动态查询 通用代码的设计与实现

经常碰到多条件联合查询的问题,以前的习惯认为很简单总会从头开始设计布局代码,往往一个查询面要费上老半天的功夫,而效果也不咋地。

       前段时间做了个相对通用的多条件动态查询面,复用起来还是挺方便的,放上来共参考指导 。
                                                                         供下载的源文件链接  :   多条件动态查询通用模板下载

主要的运行后布局:

WINFORM 多条件动态查询 通用代码的设计与实现

   
    主要的通用功能和要求:

主要的方法体:

     动态的显示查询条件:

    //初始化联合查询的页面显示
 
         private void ConditionBind()
         {
             //查询条件邦定
             DataTable dt = new DataTable();
             DataColumnCollection columns = dt.Columns;
             columns.Add("name");
             columns.Add("key");
10WINFORM 多条件动态查询 通用代码的设计与实现            DataRowCollection rows = dt.Rows;
11WINFORM 多条件动态查询 通用代码的设计与实现            rows.Add("所有", "All");
12WINFORM 多条件动态查询 通用代码的设计与实现            rows.Add("单据号", "Code");
13WINFORM 多条件动态查询 通用代码的设计与实现            rows.Add("供应商名称", "SupplierName");
14WINFORM 多条件动态查询 通用代码的设计与实现            rows.Add("经办人", "EmployeesName");
15WINFORM 多条件动态查询 通用代码的设计与实现            rows.Add("时间", "time");  
18WINFORM 多条件动态查询 通用代码的设计与实现            try
19WINFORM 多条件动态查询 通用代码的设计与实现            {
20WINFORM 多条件动态查询 通用代码的设计与实现                for (int i = 0; i < this.fpl.Controls.Count; i++)
21WINFORM 多条件动态查询 通用代码的设计与实现                {
23WINFORM 多条件动态查询 通用代码的设计与实现                    if (this.Controls.Find("fpl" + i, true).Length > 0)
24WINFORM 多条件动态查询 通用代码的设计与实现                    {
25WINFORM 多条件动态查询 通用代码的设计与实现                        ((ComboBox)this.Controls.Find("cbSelect" + i, true)[0]).DisplayMember = "name";
26WINFORM 多条件动态查询 通用代码的设计与实现                        ((ComboBox)this.Controls.Find("cbSelect" + i, true)[0]).ValueMember = "key";
27WINFORM 多条件动态查询 通用代码的设计与实现                        //用copy解决联动问题
28WINFORM 多条件动态查询 通用代码的设计与实现                        ((ComboBox)this.Controls.Find("cbSelect" + i, true)[0]).DataSource = dt.Copy();
29WINFORM 多条件动态查询 通用代码的设计与实现                    }
31WINFORM 多条件动态查询 通用代码的设计与实现                }
34WINFORM 多条件动态查询 通用代码的设计与实现            }
35WINFORM 多条件动态查询 通用代码的设计与实现            catch (Exception ex)
36WINFORM 多条件动态查询 通用代码的设计与实现            {
37WINFORM 多条件动态查询 通用代码的设计与实现                MessageBox.Show(ex.Message);
38WINFORM 多条件动态查询 通用代码的设计与实现            }
42WINFORM 多条件动态查询 通用代码的设计与实现        }

按查询条件设置显示模式:

 1WINFORM 多条件动态查询 通用代码的设计与实现  private void SetFilterCondition(ref ComboBox conditionselect)
 2WINFORM 多条件动态查询 通用代码的设计与实现        {
 3WINFORM 多条件动态查询 通用代码的设计与实现            try
 4WINFORM 多条件动态查询 通用代码的设计与实现            {
 5WINFORM 多条件动态查询 通用代码的设计与实现                for (int i = 0; i < this.fpl.Controls.Count; i++)
 6WINFORM 多条件动态查询 通用代码的设计与实现                {
 7WINFORM 多条件动态查询 通用代码的设计与实现                    if (conditionselect.Name == "cbSelect" + i.ToString())
 8WINFORM 多条件动态查询 通用代码的设计与实现                    {
 9WINFORM 多条件动态查询 通用代码的设计与实现                        if (conditionselect.Text == "时间")
10WINFORM 多条件动态查询 通用代码的设计与实现                        {
11WINFORM 多条件动态查询 通用代码的设计与实现                            if (this.Controls.Find("fplFilter" + i, true).Length > 0)
12WINFORM 多条件动态查询 通用代码的设计与实现                                this.Controls.Find("fplFilter" + i, true)[0].Visible = true;
13WINFORM 多条件动态查询 通用代码的设计与实现                            if (this.Controls.Find("txtFilter" + i, true).Length > 0)
14WINFORM 多条件动态查询 通用代码的设计与实现                                this.Controls.Find("txtFilter" + i, true)[0].Visible = false;
15WINFORM 多条件动态查询 通用代码的设计与实现                            if (this.Controls.Find("cbFilter" + i, true).Length > 0)
16WINFORM 多条件动态查询 通用代码的设计与实现                                this.Controls.Find("cbFilter" + i, true)[0].Visible = false;
17WINFORM 多条件动态查询 通用代码的设计与实现                        }
18WINFORM 多条件动态查询 通用代码的设计与实现                        else if (conditionselect.Text == "供应商名称")//在通用中需要修改或添加
19WINFORM 多条件动态查询 通用代码的设计与实现                        {
20WINFORM 多条件动态查询 通用代码的设计与实现                            if (this.Controls.Find("fplFilter" + i, true).Length > 0)
21WINFORM 多条件动态查询 通用代码的设计与实现                                this.Controls.Find("fplFilter" + i, true)[0].Visible = false;
22WINFORM 多条件动态查询 通用代码的设计与实现                            if (this.Controls.Find("txtFilter" + i, true).Length > 0)
23WINFORM 多条件动态查询 通用代码的设计与实现                                this.Controls.Find("txtFilter" + i, true)[0].Visible = false;
24WINFORM 多条件动态查询 通用代码的设计与实现                            if (this.Controls.Find("cbFilter" + i, true).Length > 0)
25WINFORM 多条件动态查询 通用代码的设计与实现                                this.Controls.Find("cbFilter" + i, true)[0].Visible = true;
26WINFORM 多条件动态查询 通用代码的设计与实现                        }
27WINFORM 多条件动态查询 通用代码的设计与实现                        else
28WINFORM 多条件动态查询 通用代码的设计与实现                        {
29WINFORM 多条件动态查询 通用代码的设计与实现                            if (this.Controls.Find("fplFilter" + i, true).Length > 0)
30WINFORM 多条件动态查询 通用代码的设计与实现                                this.Controls.Find("fplFilter" + i, true)[0].Visible = false;
31WINFORM 多条件动态查询 通用代码的设计与实现                            if (this.Controls.Find("txtFilter" + i, true).Length > 0)
32WINFORM 多条件动态查询 通用代码的设计与实现                                this.Controls.Find("txtFilter" + i, true)[0].Visible = true;
33WINFORM 多条件动态查询 通用代码的设计与实现                            if (this.Controls.Find("cbFilter" + i, true).Length > 0)
34WINFORM 多条件动态查询 通用代码的设计与实现                                this.Controls.Find("cbFilter" + i, true)[0].Visible = false;
36WINFORM 多条件动态查询 通用代码的设计与实现                        }
40WINFORM 多条件动态查询 通用代码的设计与实现                    }
41WINFORM 多条件动态查询 通用代码的设计与实现                }
42WINFORM 多条件动态查询 通用代码的设计与实现            }
43WINFORM 多条件动态查询 通用代码的设计与实现            catch (Exception ex)
44WINFORM 多条件动态查询 通用代码的设计与实现            {
45WINFORM 多条件动态查询 通用代码的设计与实现                MessageBox.Show(ex.Message);
46WINFORM 多条件动态查询 通用代码的设计与实现            }
47WINFORM 多条件动态查询 通用代码的设计与实现        }

添加条件

 1WINFORM 多条件动态查询 通用代码的设计与实现
 2WINFORM 多条件动态查询 通用代码的设计与实现        private void AddFilter()
 3WINFORM 多条件动态查询 通用代码的设计与实现        {
 4WINFORM 多条件动态查询 通用代码的设计与实现            try
 5WINFORM 多条件动态查询 通用代码的设计与实现            {
 6WINFORM 多条件动态查询 通用代码的设计与实现                for (int i = 0; i < this.fpl.Controls.Count; i++)
 7WINFORM 多条件动态查询 通用代码的设计与实现                {
 8WINFORM 多条件动态查询 通用代码的设计与实现                    可替换代码
16WINFORM 多条件动态查询 通用代码的设计与实现                    if (this.Controls.Find("fpl" + i, true).Length > 0)
17WINFORM 多条件动态查询 通用代码的设计与实现                    {
18WINFORM 多条件动态查询 通用代码的设计与实现                        if (this.Controls.Find("fpl" + i, true)[0].Visible == false)
19WINFORM 多条件动态查询 通用代码的设计与实现                        {
20WINFORM 多条件动态查询 通用代码的设计与实现                            this.Controls.Find("fpl" + i, true)[0].Visible = true;
21WINFORM 多条件动态查询 通用代码的设计与实现                            break;
22WINFORM 多条件动态查询 通用代码的设计与实现                        }
23WINFORM 多条件动态查询 通用代码的设计与实现                    }
25WINFORM 多条件动态查询 通用代码的设计与实现                }
26WINFORM 多条件动态查询 通用代码的设计与实现            }
27WINFORM 多条件动态查询 通用代码的设计与实现            catch (Exception ex)
28WINFORM 多条件动态查询 通用代码的设计与实现            {
29WINFORM 多条件动态查询 通用代码的设计与实现                MessageBox.Show(ex.Message);
30WINFORM 多条件动态查询 通用代码的设计与实现            }
31WINFORM 多条件动态查询 通用代码的设计与实现        }

提取sql语句

 1WINFORM 多条件动态查询 通用代码的设计与实现  private string BuildSQL()
 2WINFORM 多条件动态查询 通用代码的设计与实现        {
 3WINFORM 多条件动态查询 通用代码的设计与实现            try
 4WINFORM 多条件动态查询 通用代码的设计与实现            {
 6WINFORM 多条件动态查询 通用代码的设计与实现                StringBuilder sb = new StringBuilder();
 7WINFORM 多条件动态查询 通用代码的设计与实现                //需要的时候修改表明 得到通用
 8WINFORM 多条件动态查询 通用代码的设计与实现                sb.Append("select * from InStoreBill_View ");
 9WINFORM 多条件动态查询 通用代码的设计与实现                //用于判断是否是第一条数据 用于添加where的判断
10WINFORM 多条件动态查询 通用代码的设计与实现                int isFirst = 0;
11WINFORM 多条件动态查询 通用代码的设计与实现                for (int i = 0; i < this.fpl.Controls.Count; i++)
12WINFORM 多条件动态查询 通用代码的设计与实现                {
13WINFORM 多条件动态查询 通用代码的设计与实现                    生成sql语句
75WINFORM 多条件动态查询 通用代码的设计与实现                }
76WINFORM 多条件动态查询 通用代码的设计与实现                return sb.ToString();
77WINFORM 多条件动态查询 通用代码的设计与实现            }
78WINFORM 多条件动态查询 通用代码的设计与实现            catch (Exception ex)
79WINFORM 多条件动态查询 通用代码的设计与实现            {
80WINFORM 多条件动态查询 通用代码的设计与实现                MessageBox.Show(ex.Message);
81WINFORM 多条件动态查询 通用代码的设计与实现                return "";
82WINFORM 多条件动态查询 通用代码的设计与实现            }
84WINFORM 多条件动态查询 通用代码的设计与实现        }

注: 在设计过程中觉得最烦乱得是布局的设计 ,也许是不太熟练,浪费了很多的时间,好在通用或之际copy就ok了