日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/10/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WINFORM 多条件动态查询 通用代码的设计与实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????????? 經(jīng)常碰到多條件聯(lián)合查詢的問(wèn)題,以前的習(xí)慣認(rèn)為很簡(jiǎn)單總會(huì)從頭開(kāi)始設(shè)計(jì)布局代碼,往往一個(gè)查詢面要費(fèi)上老半天的功夫,而效果也不咋地。

   ??? 前段時(shí)間做了個(gè)相對(duì)通用的多條件動(dòng)態(tài)查詢面,復(fù)用起來(lái)還是挺方便的,放上來(lái)共參考指導(dǎo) 。
?????????????????????????????????????????????????????????????????????? ??供下載的源文件鏈接? :? ?多條件動(dòng)態(tài)查詢通用模板下載

???????? 主要的運(yùn)行后布局:

???????????

 ??
    主要的通用功能和要求:

???????????
???????
主要的方法體:

?     動(dòng)態(tài)的顯示查詢條件:

??????????????

?1???//初始化聯(lián)合查詢的頁(yè)面顯示
?2
?3????????private?void?ConditionBind()
?4????????{
?5????????????/**///查詢條件邦定
?6????????????DataTable?dt?=?new?DataTable();
?7????????????DataColumnCollection?columns?=?dt.Columns;
?8????????????columns.Add("name");
?9????????????columns.Add("key");
10????????????DataRowCollection?rows?=?dt.Rows;
11????????????rows.Add("所有",?"All");
12????????????rows.Add("單據(jù)號(hào)",?"Code");
13????????????rows.Add("供應(yīng)商名稱",?"SupplierName");
14????????????rows.Add("經(jīng)辦人",?"EmployeesName");
15????????????rows.Add("時(shí)間",?"time");??
18????????????try
19????????????{
20????????????????for?(int?i?=?0;?i?<?this.fpl.Controls.Count;?i++)
21????????????????{
23????????????????????if?(this.Controls.Find("fpl"?+?i,?true).Length?>?0)
24????????????????????{
25????????????????????????((ComboBox)this.Controls.Find("cbSelect"?+?i,?true)[0]).DisplayMember?=?"name";
26????????????????????????((ComboBox)this.Controls.Find("cbSelect"?+?i,?true)[0]).ValueMember?=?"key";
27????????????????????????//用copy解決聯(lián)動(dòng)問(wèn)題
28????????????????????????((ComboBox)this.Controls.Find("cbSelect"?+?i,?true)[0]).DataSource?=?dt.Copy();
29????????????????????}

31????????????????}

34????????????}

35????????????catch?(Exception?ex)
36????????????{
37????????????????MessageBox.Show(ex.Message);
38????????????}

42????????}


????????? 按查詢條件設(shè)置顯示模式:

????????

?1??private?void?SetFilterCondition(ref?ComboBox?conditionselect)
?2????????{
?3????????????try
?4????????????{
?5????????????????for?(int?i?=?0;?i?<?this.fpl.Controls.Count;?i++)
?6????????????????{
?7????????????????????if?(conditionselect.Name?==?"cbSelect"?+?i.ToString())
?8????????????????????{
?9????????????????????????if?(conditionselect.Text?==?"時(shí)間")
10????????????????????????{
11????????????????????????????if?(this.Controls.Find("fplFilter"?+?i,?true).Length?>?0)
12????????????????????????????????this.Controls.Find("fplFilter"?+?i,?true)[0].Visible?=?true;
13????????????????????????????if?(this.Controls.Find("txtFilter"?+?i,?true).Length?>?0)
14????????????????????????????????this.Controls.Find("txtFilter"?+?i,?true)[0].Visible?=?false;
15????????????????????????????if?(this.Controls.Find("cbFilter"?+?i,?true).Length?>?0)
16????????????????????????????????this.Controls.Find("cbFilter"?+?i,?true)[0].Visible?=?false;
17????????????????????????}

18????????????????????????else?if?(conditionselect.Text?==?"供應(yīng)商名稱")//在通用中需要修改或添加
19????????????????????????{
20????????????????????????????if?(this.Controls.Find("fplFilter"?+?i,?true).Length?>?0)
21????????????????????????????????this.Controls.Find("fplFilter"?+?i,?true)[0].Visible?=?false;
22????????????????????????????if?(this.Controls.Find("txtFilter"?+?i,?true).Length?>?0)
23????????????????????????????????this.Controls.Find("txtFilter"?+?i,?true)[0].Visible?=?false;
24????????????????????????????if?(this.Controls.Find("cbFilter"?+?i,?true).Length?>?0)
25????????????????????????????????this.Controls.Find("cbFilter"?+?i,?true)[0].Visible?=?true;
26????????????????????????}

27????????????????????????else
28????????????????????????{
29????????????????????????????if?(this.Controls.Find("fplFilter"?+?i,?true).Length?>?0)
30????????????????????????????????this.Controls.Find("fplFilter"?+?i,?true)[0].Visible?=?false;
31????????????????????????????if?(this.Controls.Find("txtFilter"?+?i,?true).Length?>?0)
32????????????????????????????????this.Controls.Find("txtFilter"?+?i,?true)[0].Visible?=?true;
33????????????????????????????if?(this.Controls.Find("cbFilter"?+?i,?true).Length?>?0)
34????????????????????????????????this.Controls.Find("cbFilter"?+?i,?true)[0].Visible?=?false;
36????????????????????????}

40????????????????????}

41????????????????}

42????????????}

43????????????catch?(Exception?ex)
44????????????{
45????????????????MessageBox.Show(ex.Message);
46????????????}

47????????}

?


添加條件?

?1
?2????????private?void?AddFilter()
?3????????{
?4????????????try
?5????????????{
?6????????????????for?(int?i?=?0;?i?<?this.fpl.Controls.Count;?i++)
?7????????????????{
?8????????????????????可替換代碼#region?可替換代碼
?9????????????????????//if?(((FlowLayoutPanel)this.fpl.Controls[i]).Visible?==?false)
10????????????????????//{
11????????????????????//????((FlowLayoutPanel)this.fpl.Controls[i]).Visible?=?true;
12????????????????????//????break;
13????????????????????//}
14????????????????????#endregion

16????????????????????if?(this.Controls.Find("fpl"?+?i,?true).Length?>?0)
17????????????????????{
18????????????????????????if?(this.Controls.Find("fpl"?+?i,?true)[0].Visible?==?false)
19????????????????????????{
20????????????????????????????this.Controls.Find("fpl"?+?i,?true)[0].Visible?=?true;
21????????????????????????????break;
22????????????????????????}

23????????????????????}

25????????????????}

26????????????}

27????????????catch?(Exception?ex)
28????????????{
29????????????????MessageBox.Show(ex.Message);
30????????????}

31????????}

??????????
提取sql語(yǔ)句

?

????????

?1??private?string?BuildSQL()
?2????????{
?3????????????try
?4????????????{
?6????????????????StringBuilder?sb?=?new?StringBuilder();
?7????????????????//需要的時(shí)候修改表明?得到通用
?8????????????????sb.Append("select?*?from?InStoreBill_View?");
?9????????????????//用于判斷是否是第一條數(shù)據(jù)?用于添加where的判斷
10????????????????int?isFirst?=?0;
11????????????????for?(int?i?=?0;?i?<?this.fpl.Controls.Count;?i++)
12????????????????{
13????????????????????生成sql語(yǔ)句#region???生成sql語(yǔ)句
14????????????????????if?(this.Controls.Find("fpl"?+?i,?true)[0].Visible?==?true)
15????????????????????{
16
17????????????????????????if?(this.Controls.Find("cbSelect"?+?i,?true)[0].Text?!=?"所有")
18????????????????????????{
19????????????????????????????ComboBox?selectCondition?=?(ComboBox)this.Controls.Find("cbSelect"?+?i,?true)[0];
20
21????????????????????????????if?(this.Controls.Find("txtFilter"?+?i,?true)[0].Visible?==?true)
22????????????????????????????{//為本類型
23????????????????????????????????isFirst++;
24????????????????????????????????if?(isFirst?==?1)//如果是第一次進(jìn)入的話??isfirst應(yīng)該為1
25????????????????????????????????{
26????????????????????????????????????sb.Append("??where??");
27????????????????????????????????}

28????????????????????????????????else?if?(isFirst?>?1)
29????????????????????????????????{
30????????????????????????????????????sb.Append("?and?");
31????????????????????????????????}

32????????????????????????????????else
33????????????????????????????????{?}
34
35????????????????????????????????sb.Append(string.Format("?{0}?like?'%{1}%'?",?selectCondition.SelectedValue.ToString().Trim(),?this.Controls.Find("txtFilter"?+?i.ToString(),?true)[0].Text.Trim()));
36
37????????????????????????????}

38????????????????????????????else?if?(this.Controls.Find("cbFilter"?+?i,?true)[0].Visible?==?true)
39????????????????????????????{//下拉框類型
40????????????????????????????????isFirst++;
41????????????????????????????????if?(isFirst?==?1)//如果是第一次進(jìn)入的話??isfirst應(yīng)該為1
42????????????????????????????????{
43????????????????????????????????????sb.Append("??where??");
44????????????????????????????????}

45????????????????????????????????else?if?(isFirst?>?1)
46????????????????????????????????{
47????????????????????????????????????sb.Append("?and?");
48????????????????????????????????}

49????????????????????????????????else
50????????????????????????????????{?}
51????????????????????????????????sb.Append(string.Format("?{0}?like?'%{1}%'?",?selectCondition.SelectedValue.ToString().Trim(),?this.Controls.Find("cbFilter"?+?i.ToString(),?true)[0].Text.Trim()));
52
53
54????????????????????????????}

55????????????????????????????else
56????????????????????????????{//時(shí)間類型
57????????????????????????????????isFirst++;
58????????????????????????????????if?(isFirst?==?1)//如果是第一次進(jìn)入的話??isfirst應(yīng)該為1
59????????????????????????????????{
60????????????????????????????????????sb.Append("??where??");
61????????????????????????????????}

62????????????????????????????????else?if?(isFirst?>?1)
63????????????????????????????????{
64????????????????????????????????????sb.Append("?and?");
65????????????????????????????????}

66????????????????????????????????else
67????????????????????????????????{?}
68????????????????????????????????sb.Append(string.Format("?{0}?between?'{1}'?and?'{2}'?",?selectCondition.SelectedValue.ToString().Trim(),?((DateTimePicker)this.Controls.Find("dtp"?+?i.ToString()?+?"Begin",?true)[0]).Value.ToShortDateString(),?((DateTimePicker)this.Controls.Find("dtp"?+?i.ToString()?+?"End",?true)[0]).Value.ToShortDateString()));
69
70????????????????????????????}

71
72????????????????????????}

73????????????????????}

74????????????????????#endregion

75????????????????}

76????????????????return?sb.ToString();
77????????????}

78????????????catch?(Exception?ex)
79????????????{
80????????????????MessageBox.Show(ex.Message);
81????????????????return?"";
82????????????}

84????????}

?

?????? 注: 在設(shè)計(jì)過(guò)程中覺(jué)得最煩亂得是布局的設(shè)計(jì) ,也許是不太熟練,浪費(fèi)了很多的時(shí)間,好在通用或之際copy就ok了

  ????供下載的源文件鏈接? :? ?多條件動(dòng)態(tài)查詢通用模板下載

轉(zhuǎn)載于:https://www.cnblogs.com/huomm/archive/2008/03/22/1117552.html

總結(jié)

以上是生活随笔為你收集整理的WINFORM 多条件动态查询 通用代码的设计与实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。