原創企業級控件庫之組合查詢控件
原創企業級控件庫之組合查詢控件
發布日期:2010年12月10日星期五 作者:EricHu
無論對于企業還是對于軟件開發者來說,擁有自己的一套常用控件庫,對于開發產品來說不僅可以縮短開發時間,提高開發效率,同時對一個企業整個產品的形象也會大大提高。本系列控件為作者在實際開發應用中總結出來,且成功應用于多個項目。現對整個控件庫一一講解,最后我會把整個控件庫開源,方便你的使用,同時會給一個綜合應用這些控件的實例。
成就別人、等于成就自己。我沒什么要求,歡迎大家多多支持與評論,覺得不錯的,記得點擊文章左下角的”關注博客”,就這么簡單。
整個控件樣式如下:

說明:
1、本控件分為組合查詢與固定查詢兩種,上圖為組合查詢。固定查詢見下圖。
2、組合查詢以下幾部份組成:
a. 查詢項:設置查詢的項目,通俗點就是表中的字段。
b. 運算符:設置查詢條件,如:等于、大小、包含、為空等。
c. 值:設置查詢的值。
d. 組合方式:當查詢條件大于兩個時,其組合條件可設為:與方式、或方式、非方式三種。
e. 新增:新增查詢條件到組合條件框。
f. 清除:當輸入錯誤時,可以清除組合條件框中的組合查詢條件。
g. 查詢:當用戶單擊查詢時,返回查詢表達式,供用戶使用。
h. 固定查詢:當用戶單擊固定查詢時,控件變成固定查詢控件,同時,固定查詢變成“組合查詢”,如下圖:

3、本控件特點:
a. 對用戶輸入的危險字符進行了屏蔽,可有效防止對數據庫的破壞。
b. 控件返回的查詢條件都是合法的Sql語句中的Where條件表達式,可以直接使用。
c. 開放源代碼,用戶可以根據自己的需要進行定制,消除你的后顧之優。
4、本控件類圖如下所示:

5、本控件核心代碼
a. 得到組合查詢表達式
#region 組合查詢表達式
/// <summary>
/// 單擊[查詢]按鈕時發生
/// </summary>
[Category("組合查詢"), Description("單擊[查詢]按鈕時發生。"), Browsable(true)]
public event EventHandler OnQueryClicked;
private string _queryExpression;
/// <summary>
/// 最終的查詢表達式,可直接用于Where子句中
/// </summary>
[Category("組合查詢"), Description("最終的查詢表達式,可直接用于Where子句中。"), Browsable(false)]
public string QueryExpression
{
get { return _queryExpression; }
set
{
_queryExpression = value;
if (OnQueryClicked != null)
{
OnQueryClicked(this, null);
}
}
}
#endregion
b. 設置查詢項中要顯示的數據列表
#region 設置查詢項中要顯示的數據列表
/// <summary>
/// 設置查詢項中要顯示的數據列表(推薦使用這個方法)
/// </summary>
/// <param name="dicListQueryItems">表示鍵和值的集合(鍵:數據字段,值:數據字段對應的數據類型)</param>
public void SetQueryItems(Dictionary<string, string> dicListQueryItems)
{
cboQueryItems.Items.Clear();
dicQueryItem = null;
dicQueryItem = dicListQueryItems;
foreach (KeyValuePair<string, string> kvp in dicListQueryItems)
{
cboQueryItems.Items.Add(kvp.Key);
}
if (cboQueryItems.Items.Contains("案卷號"))//把案卷號顯示在第一個
{
cboQueryItems.Items.Remove("案卷號");
cboQueryItems.Items.Insert(0, "案卷號");
}
cboQueryItems.SelectedIndex = 0;
}
/// <summary>
/// 設置查詢項中要顯示的數據列表
/// </summary>
/// <param name="sQueryItems">string類型數組</param>
public void SetQueryItems(string[] sQueryItems)
{
cboQueryItems.Items.Clear();
foreach (string queryItem in sQueryItems)
{
cboQueryItems.Items.Add(queryItem);
}
cboQueryItems.SelectedIndex = 0;
}
/// <summary>
/// 設置查詢項中要顯示的數據列表
/// </summary>
/// <param name="listQueryItems">List泛型</param>
public void SetQueryItems(List<string> listQueryItems)
{
cboQueryItems.Items.Clear();
foreach (string queryItem in listQueryItems)
{
cboQueryItems.Items.Add(queryItem);
}
cboQueryItems.SelectedIndex = 0;
}
#endregion
C.增加查詢條件
代碼
#region 增加查詢條件單擊事件 btnAddQueryCondition_Click(object sender, EventArgs e)
private void btnAddQueryCondition_Click(object sender, EventArgs e)
{
if (cboQueryItems.Items.Count == 0)
{
DialogHelper.ShowErrorMsg("查詢項為空,不能進行查詢!");
return;
}
else
{
string sQueryItem = cboQueryItems.Text.Trim(); //要查詢的項
string sQueryValue = txtQueryValue.Text.Trim(); //查詢項的值
string sCombinMode = string.Empty; //組合方式
string sQueryExpress = string.Empty;//查詢條件表達式
if (cboOperator.Text != "為空" && cboOperator.Text != "不為空")
{
if (string.IsNullOrEmpty(txtQueryValue.Text.Trim()))
{
DialogHelper.ShowWarningMsg("必須輸入查詢項的值!");
txtQueryValue.Focus();
return;
}
else
{
if (StringHelper.HasDangerousWord(txtQueryValue.Text.Trim()))
{
DialogHelper.ShowWarningMsg("對不起,你的輸入含有危險字符,請重新輸入!");
txtQueryValue.Clear();
txtQueryValue.Focus();
return;
}
}
}
switch (cboCombinMode.Text)
{
case "與方式":
sCombinMode = "AND";
break;
case "或方式":
sCombinMode = "OR";
break;
case "非方式":
sCombinMode = "AND NOT";
break;
default:
break;
}
#region 條件設置
switch (cboOperator.Text)
{
case "包含":
sQueryExpress = sQueryItem + " LIKE '%" + sQueryValue + "%'";
break;
case "左包含":
sQueryExpress = sQueryItem + " LIKE '" + sQueryValue + "%'";
break;
case "右包含":
sQueryExpress = sQueryItem + " LIKE '%" + sQueryValue + "'";
break;
case "為空":
sQueryExpress = sQueryItem + " IS NULL OR " + sQueryItem + "= ''";
break;
case "不為空":
sQueryExpress = sQueryItem + " IS NOT NULL And " + sQueryItem + "!= ''";
break;
case "大于":
if (dicQueryItem.Count == 0)
{
sQueryExpress = sQueryItem + " > " + sQueryValue;
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
if ((kvp.Value == "System.DateTime" || kvp.Value == "System.String")
&& kvp.Key != "案卷號") //kvp.Key != "案卷號"主是要因為案卷號是字符型,案卷號>'90',得不到正確結果,所以在此這樣做
{
sQueryExpress = sQueryItem + " > '" + sQueryValue + "'";
}
else
{
sQueryExpress = sQueryItem + " > " + sQueryValue;
}
}
}
}
break;
case "大于或等于":
if (dicQueryItem.Count == 0)
{
sQueryExpress = sQueryItem + " >= " + sQueryValue;
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
if ((kvp.Value == "System.DateTime" || kvp.Value == "System.String") && kvp.Key != "案卷號")
{
sQueryExpress = sQueryItem + " >= '" + sQueryValue + "'";
}
else
{
sQueryExpress = sQueryItem + " >= " + sQueryValue;
}
}
}
}
break;
case "等于":
if (dicQueryItem.Count == 0)
{
sQueryExpress = sQueryItem + " = " + sQueryValue;
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
//---3
if (kvp.Value == "System.DateTime" || kvp.Value == "System.String")
{
sQueryExpress = sQueryItem + " = '" + sQueryValue + "'";
}
else
{
sQueryExpress = sQueryItem + " = " + sQueryValue;
}
}
}
}
break;
case "小于或等于":
if (dicQueryItem.Count == 0)
{
sQueryExpress = sQueryItem + " <= " + sQueryValue;
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
if ((kvp.Value == "System.DateTime" || kvp.Value == "System.String") && kvp.Key != "案卷號")
{
sQueryExpress = sQueryItem + " <= '" + sQueryValue + "'";
}
else
{
sQueryExpress = sQueryItem + " <= " + sQueryValue;
}
}
}
}
break;
case "小于":
if (dicQueryItem.Count == 0)
{
sQueryExpress = sQueryItem + " < " + sQueryValue;
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
if ((kvp.Value == "System.DateTime" || kvp.Value == "System.String") && kvp.Key != "案卷號")
{
sQueryExpress = sQueryItem + " < '" + sQueryValue + "'";
}
else
{
sQueryExpress = sQueryItem + " < " + sQueryValue;
}
}
}
}
break;
default:
break;
}
if (!string.IsNullOrEmpty(txtQueryCondition.Text.Trim()))
{
sQueryExpress = sCombinMode + " " + sQueryExpress;
}
txtQueryCondition.AppendText(" " + sQueryExpress);
#endregion
}
}
#endregion
6、 控件編譯后,你可把編譯后的dll文件直接拖運到Microsoft Visual Studi工具箱中,就可以看到我們的組合查詢控件了。在實際應用中,僅需以下兩個步驟即可完成整個代碼。
a.在窗體社會分配加載時綁定相應的查詢項
代碼
/// <summary>
/// 增加測試數據
/// </summary>
private void BindTestData()
{
dtTest = new DataTable();
dtTest.Columns.Add(new DataColumn("身份證號", typeof(System.String)));
dtTest.Columns.Add(new DataColumn("姓名", typeof(System.String)));
dtTest.Columns.Add(new DataColumn("QQ", typeof(System.String)));
dtTest.Columns.Add(new DataColumn("年齡", typeof(System.Int16)));
dtTest.Columns.Add(new DataColumn("出生時間", typeof(System.DateTime)));
}
private void FrmUcCombinQueryTest_Shown(object sender, EventArgs e)
{
BindTestData();
//綁定查詢項
Dictionary<string, string> dicListQueryItems = new Dictionary<string, string>();
foreach (DataColumn dc in dtTest.Columns)
{
dicListQueryItems.Add(dc.ColumnName, dc.DataType.ToString());
}
ucCombinQueryTest.SetQueryItems(dicListQueryItems);
}
b.單擊查詢時,返回給用戶的查詢表達式,用戶直接得到使用,在組合查詢的OnQueryClicked事件代碼中進行處理。
{
//得到查詢表達式
MessageBox.Show(ucCombinQueryTest.QueryExpression);
}
7、下面給出組合查詢控件完整代碼
#region 版權信息
/*---------------------------------------------------------------------*
// Copyright (C) 2008 http://www.rzrgm.cn/huyong
// 版權所有。
// 項目 名稱:《Winform通用控件庫》
// 文 件 名: UcCombinQuery.cs
// 類 全 名: DotNet.Controls.UcCombinQuery
// 描 述: 組合查詢控件
// 創建 時間: 2008-08-05
// 創建人信息: [**** 姓名:胡勇 QQ:406590790 E-Mail:406590790@qq.com *****]
*----------------------------------------------------------------------*/
#endregion
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DotNet.Common;
namespace DotNet.Controls
{
/// <summary>
/// 組合查詢控件
/// UcCombinQuery
/// 修改紀錄
/// 2010-12-6 胡勇 優化相關代碼。
/// 2010-11-29 胡勇 取消對:清除組合查詢條件時的提示。
/// 2010-11-8 胡勇 要是查詢項中包含"案卷號",則把案卷號移動到第一個查詢項。
/// 2010-11-5 胡勇 對案卷號的查詢,不加單引號。
/// 2010-8-30 胡勇 對查詢字符型字段進行>、<、>=、<=、=操作時,其值自動加單引號。
/// 2008-08-05 胡勇 創建組合查詢控件
/// <author>
/// <name>胡勇</name>
/// <QQ>406590790</QQ>
/// <Email>406590790@qq.com</Email>
/// </author>
/// </summary>
[ToolboxItem(true)]
[DefaultEvent("OnQueryClicked")]
[ToolboxBitmap(typeof(UcCombinQuery), "DotNet.Controls.Images.UcCombinQuery.bmp")]
[Description("組合查詢控件")]
public partial class UcCombinQuery : UserControl
{
#region 公共變量
Dictionary<string, string> dicQueryItem = new Dictionary<string, string>();
#endregion
#region 公共方法
/// <summary>
/// 查詢模式
/// </summary>
public enum QueryMode
{
/// <summary>
/// 固定查詢
/// </summary>
FixQueryMode = 0x0001,
/// <summary>
/// 組合查詢
/// </summary>
CompositeQueryMode = 0x0002
}
/// <summary>
/// 設置查詢模式
/// </summary>
/// <param name="queryMode">查詢模式</param>
public void SetQueryMode(QueryMode queryMode)
{
if (queryMode == QueryMode.FixQueryMode)
{
btnQueryMode.Text = "固定查詢";
}
else
{
btnQueryMode.Text = "組合查詢";
}
btnQueryMode_Click(null, null);
}
#endregion
#region 可見性屬性
private bool _QueryModeButtomVisible = true;
/// <summary>
/// 組合查詢按鈕是否可見
/// </summary>
[Category("組合查詢"), Description("組合查詢是否可見。")]
public bool QueryModeButtomVisible
{
get
{
return _QueryModeButtomVisible;
}
set
{
_QueryModeButtomVisible = value;
if (!_QueryModeButtomVisible)
{
toolStripSeparator1.Visible = false;
}
this.btnQueryMode.Visible = _QueryModeButtomVisible;
}
}
#endregion
#region 構造函數
public UcCombinQuery()
{
InitializeComponent();
}
#endregion
#region 組合查詢表達式
/// <summary>
/// 單擊[查詢]按鈕時發生
/// </summary>
[Category("組合查詢"), Description("單擊[查詢]按鈕時發生。"), Browsable(true)]
public event EventHandler OnQueryClicked;
private string _queryExpression;
/// <summary>
/// 最終的查詢表達式,可直接用于Where子句中
/// </summary>
[Category("組合查詢"), Description("最終的查詢表達式,可直接用于Where子句中。"), Browsable(false)]
public string QueryExpression
{
get { return _queryExpression; }
set
{
_queryExpression = value;
if (OnQueryClicked != null)
{
OnQueryClicked(this, null);
}
}
}
#endregion
#region 查詢項相關控制
#region 設置查詢項中要顯示的數據列表
/// <summary>
/// 設置查詢項中要顯示的數據列表(推薦使用這個方法)
/// </summary>
/// <param name="dicListQueryItems">表示鍵和值的集合(鍵:數據字段,值:數據字段對應的數據類型)</param>
public void SetQueryItems(Dictionary<string, string> dicListQueryItems)
{
cboQueryItems.Items.Clear();
dicQueryItem = null;
dicQueryItem = dicListQueryItems;
foreach (KeyValuePair<string, string> kvp in dicListQueryItems)
{
cboQueryItems.Items.Add(kvp.Key);
}
if (cboQueryItems.Items.Contains("案卷號"))//把案卷號顯示在第一個
{
cboQueryItems.Items.Remove("案卷號");
cboQueryItems.Items.Insert(0, "案卷號");
}
cboQueryItems.SelectedIndex = 0;
}
/// <summary>
/// 設置查詢項中要顯示的數據列表
/// </summary>
/// <param name="sQueryItems">string類型數組</param>
public void SetQueryItems(string[] sQueryItems)
{
cboQueryItems.Items.Clear();
foreach (string queryItem in sQueryItems)
{
cboQueryItems.Items.Add(queryItem);
}
cboQueryItems.SelectedIndex = 0;
}
/// <summary>
/// 設置查詢項中要顯示的數據列表
/// </summary>
/// <param name="listQueryItems">List泛型</param>
public void SetQueryItems(List<string> listQueryItems)
{
cboQueryItems.Items.Clear();
foreach (string queryItem in listQueryItems)
{
cboQueryItems.Items.Add(queryItem);
}
cboQueryItems.SelectedIndex = 0;
}
#endregion
/// <summary>
/// 設置查詢項的選擇索引項
/// </summary>
/// <param name="index">索引的下標</param>
public void SetQueryItemsSelectIndex(int index)
{
this.cboQueryItems.SelectedIndex = index;
}
/// <summary>
/// 設置查詢項的選擇內容
/// </summary>
/// <param name="sTxt">查詢項選中的內容</param>
public void SetQueryItemSelectText(string sTxt)
{
this.cboQueryItems.SelectedText =sTxt;
}
/// <summary>
/// 清空選項值
/// </summary>
public void ClearQueryItems()
{
cboQueryItems.Items.Clear();
}
#endregion
#region 事件代碼
#region 窗體Load事件 UcCombinQuery_Load(object sender, EventArgs e)
private void UcCombinQuery_Load(object sender, EventArgs e)
{
this.Height = 25;
}
#endregion
#region 設置查詢模式(組合查詢或固定查詢:btnQueryMode_Click(object sender, EventArgs e)
private void btnQueryMode_Click(object sender, EventArgs e)
{
cboQueryItems.Focus();
//spContainerHorizontal.Panel2Collapsed = !spContainerHorizontal.Panel2Collapsed;
lblOperator.Visible = !lblOperator.Visible;
cboOperator.Visible = !cboOperator.Visible;
lblCombinMode.Visible = !lblCombinMode.Visible;
cboCombinMode.Visible = !cboCombinMode.Visible;
sp1.Visible = !sp1.Visible;
if (btnQueryMode.Text == "固定查詢")
{
btnQueryMode.Text = "組合查詢";
btnAddQueryCondition.Visible = !btnAddQueryCondition.Visible;
btnClsQueryCondition.Visible = !btnClsQueryCondition.Visible;
this.Height = 25;
btnQueryMode.Image = DotNet.Controls.Properties.Resources.組合查詢;//導入圖片
}
else if (btnQueryMode.Text == "組合查詢")
{
txtQueryCondition.Clear();
cboOperator.SelectedIndex = 0;
cboCombinMode.SelectedIndex = 0;
btnAddQueryCondition.Visible = !btnAddQueryCondition.Visible;
btnClsQueryCondition.Visible = !btnClsQueryCondition.Visible;
this.Height = 86;
btnQueryMode.Text = "固定查詢";
btnQueryMode.Image = DotNet.Controls.Properties.Resources.固定查詢;
}
}
#endregion
#region 增加查詢條件單擊事件 btnAddQueryCondition_Click(object sender, EventArgs e)
private void btnAddQueryCondition_Click(object sender, EventArgs e)
{
if (cboQueryItems.Items.Count == 0)
{
DialogHelper.ShowErrorMsg("查詢項為空,不能進行查詢!");
return;
}
else
{
string sQueryItem = cboQueryItems.Text.Trim(); //要查詢的項
string sQueryValue = txtQueryValue.Text.Trim(); //查詢項的值
string sCombinMode = string.Empty; //組合方式
string sQueryExpress = string.Empty;//查詢條件表達式
if (cboOperator.Text != "為空" && cboOperator.Text != "不為空")
{
if (string.IsNullOrEmpty(txtQueryValue.Text.Trim()))
{
DialogHelper.ShowWarningMsg("必須輸入查詢項的值!");
txtQueryValue.Focus();
return;
}
else
{
if (StringHelper.HasDangerousWord(txtQueryValue.Text.Trim()))
{
DialogHelper.ShowWarningMsg("對不起,你的輸入含有危險字符,請重新輸入!");
txtQueryValue.Clear();
txtQueryValue.Focus();
return;
}
}
}
switch (cboCombinMode.Text)
{
case "與方式":
sCombinMode = "AND";
break;
case "或方式":
sCombinMode = "OR";
break;
case "非方式":
sCombinMode = "AND NOT";
break;
default:
break;
}
#region 條件設置
switch (cboOperator.Text)
{
case "包含":
sQueryExpress = sQueryItem + " LIKE '%" + sQueryValue + "%'";
break;
case "左包含":
sQueryExpress = sQueryItem + " LIKE '" + sQueryValue + "%'";
break;
case "右包含":
sQueryExpress = sQueryItem + " LIKE '%" + sQueryValue + "'";
break;
case "為空":
sQueryExpress = sQueryItem + " IS NULL OR " + sQueryItem + "= ''";
break;
case "不為空":
sQueryExpress = sQueryItem + " IS NOT NULL And " + sQueryItem + "!= ''";
break;
case "大于":
if (dicQueryItem.Count == 0)
{
sQueryExpress = sQueryItem + " > " + sQueryValue;
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
if ((kvp.Value == "System.DateTime" || kvp.Value == "System.String")
&& kvp.Key != "案卷號") //kvp.Key != "案卷號"主是要因為案卷號是字符型,案卷號>'90',得不到正確結果,所以在此這樣做
{
sQueryExpress = sQueryItem + " > '" + sQueryValue + "'";
}
else
{
sQueryExpress = sQueryItem + " > " + sQueryValue;
}
}
}
}
break;
case "大于或等于":
if (dicQueryItem.Count == 0)
{
sQueryExpress = sQueryItem + " >= " + sQueryValue;
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
if ((kvp.Value == "System.DateTime" || kvp.Value == "System.String") && kvp.Key != "案卷號")
{
sQueryExpress = sQueryItem + " >= '" + sQueryValue + "'";
}
else
{
sQueryExpress = sQueryItem + " >= " + sQueryValue;
}
}
}
}
break;
case "等于":
if (dicQueryItem.Count == 0)
{
sQueryExpress = sQueryItem + " = " + sQueryValue;
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
//---3
if (kvp.Value == "System.DateTime" || kvp.Value == "System.String")
{
sQueryExpress = sQueryItem + " = '" + sQueryValue + "'";
}
else
{
sQueryExpress = sQueryItem + " = " + sQueryValue;
}
}
}
}
break;
case "小于或等于":
if (dicQueryItem.Count == 0)
{
sQueryExpress = sQueryItem + " <= " + sQueryValue;
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
if ((kvp.Value == "System.DateTime" || kvp.Value == "System.String") && kvp.Key != "案卷號")
{
sQueryExpress = sQueryItem + " <= '" + sQueryValue + "'";
}
else
{
sQueryExpress = sQueryItem + " <= " + sQueryValue;
}
}
}
}
break;
case "小于":
if (dicQueryItem.Count == 0)
{
sQueryExpress = sQueryItem + " < " + sQueryValue;
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
if ((kvp.Value == "System.DateTime" || kvp.Value == "System.String") && kvp.Key != "案卷號")
{
sQueryExpress = sQueryItem + " < '" + sQueryValue + "'";
}
else
{
sQueryExpress = sQueryItem + " < " + sQueryValue;
}
}
}
}
break;
default:
break;
}
if (!string.IsNullOrEmpty(txtQueryCondition.Text.Trim()))
{
sQueryExpress = sCombinMode + " " + sQueryExpress;
}
txtQueryCondition.AppendText(" " + sQueryExpress);
#endregion
}
}
#endregion
#region 清除查詢條件 btnClsQueryCondition_Click(object sender, EventArgs e)
//清除查詢條件
private void btnClsQueryCondition_Click(object sender, EventArgs e)
{
if (txtQueryCondition.Text.Trim() != string.Empty)
{
txtQueryCondition.Clear();
}
}
#endregion
#region 查詢單擊事件 btnQuery_Click(object sender, EventArgs e)
private void btnQuery_Click(object sender, EventArgs e)
{
if (cboQueryItems.Items.Count == 0)
{
DialogHelper.ShowErrorMsg("查詢項為空!");
return;
}
else
{
if (btnQueryMode.Text == "組合查詢")
{
if (string.IsNullOrEmpty(txtQueryValue.Text.Trim()))
{
QueryExpression = "1 = 1";
return;
}
else
{
if (StringHelper.HasDangerousWord(txtQueryValue.Text.Trim())) //危險字符判斷
{
DialogHelper.ShowWarningMsg("對不起,你的輸入包含危險字符,請重新輸入!");
txtQueryValue.Clear();
txtQueryValue.Focus();
return;
}
else
{
if (dicQueryItem.Count == 0)
{
QueryExpression = cboQueryItems.Text + " = '" + txtQueryValue.Text.Trim() + "'";//精確查詢
}
else
{
foreach (KeyValuePair<string, string> kvp in dicQueryItem)
{
if (cboQueryItems.Text == kvp.Key)
{
if (kvp.Value == "System.DateTime")
{
QueryExpression = cboQueryItems.Text + " = '" + txtQueryValue.Text.Trim() + "'";//精確查詢
}
else
{
QueryExpression = cboQueryItems.Text + " = '" + txtQueryValue.Text.Trim() + "'";//精確查詢
}
}
}
}
}
}
}
else
{
if (string.IsNullOrEmpty(txtQueryCondition.Text.Trim()))
{
if (cboOperator.Text != "為空" && cboOperator.Text != "不為空")
{
if (txtQueryValue.Text.Trim() == string.Empty)
{
DialogHelper.ShowWarningMsg("必須輸入查詢項的值!");
txtQueryValue.Focus();
return;
}
else
{
if (StringHelper.HasDangerousWord(txtQueryValue.Text.Trim()))
{
DialogHelper.ShowWarningMsg("對不起,你的輸入含有危險字符,請重新輸入!");
txtQueryValue.Clear();
txtQueryValue.Focus();
return;
}
else
{
btnAddQueryCondition_Click(sender, e);
}
}
}
else
{
btnAddQueryCondition_Click(sender, e);
}
}
QueryExpression = txtQueryCondition.Text.Trim();
}
}
}
#endregion
#endregion
}
}
作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機號)
框架官網:
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國思RDIF開發框架
,
給用戶和開發者最佳的.Net框架平臺方案,為企業快速構建跨平臺、企業級的應用提供強大支持。
關于作者:系統架構師、信息系統項目管理師、DBA。專注于微軟平臺項目架構、管理和企業解決方案,多年項目開發與管理經驗,曾多次組織并開發多個大型項目,在面向對象、面向服務以及數據庫領域有一定的造詣。現主要從事基于
RDIF
框架的技術開發、咨詢工作,主要服務于金融、醫療衛生、鐵路、電信、物流、物聯網、制造、零售等行業。
如有問題或建議,請多多賜教!
本文版權歸作者和CNBLOGS博客共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過微信、郵箱、QQ等聯系我,非常感謝。

無論對于企業還是對于軟件開發者來說,擁有自己的一套常用控件庫,對于開發產品來說不僅可以縮短開發時間,提高開發效率,同時對一個企業整個產品的形象也會大大提高。本系列控件為作者在實際開發應用中總結出來,且成功應用于多個項目。現對整個控件庫一一講解,最后我會把整個控件庫開源,方便你的使用,同時會給一個綜合應用這些控件的實例。
浙公網安備 33010602011771號