C/S综合查询自定义用户控件

   开发项目的时候,查询功能是一个比较常见的功能,对于简单的查询功能,一般都是在当前页面新加一个查询页面(或区域)来实现。而对于复杂的或者是综合查询功能,有二种可以实现的办法,一种是如简单查询一样,在每个页面单独显示,这样可以对每个综合查询进行独立定制,比较直观,也比较友好,但重复量大,页面可能会增加很多页面,对于系统维护来说,这不是一个好的选择。第二种就是提供一种每个页面都可以用或者是绝大部分页面都适用的综合查询自定义用户控件。以下就是用C#开发的综合查询自定义用户控件,是用VS2005开发的。首先把整体界面先给出来。


说明:最上面一排分别表示,第一个单元格显示要查询的字段,该字段由可以由DataGridView等得来,第二个单元格为比较参数,如大于,小于,等于等第三个单元格为输入框,第四个单元格为逻辑参数,如且与或。点击添加时根据前面四个单元格的内容组合成一条查询语句插入到下面的DataGridView中。删除功能就是删除一个查询SQL语句,确定时把查询条件返回(也可以返回一个SQL语句)。
该优点是可以实现只需要传入一个SQL语句和一个DataGridView就可以实现查询,及显示相应的查询内容了。
主要源代码如下:

ContractedBlock.gif ExpandedBlockStart.gif Code
ContractedBlock.gifExpandedBlockStart.gifPrority#region Prority

        
public DataGridView DGW_Query
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
get
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
return dg;
            }

            
set
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                dg 
= value;
            }

        }


        
public DataSet DS_Query
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
set
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                DS_Query 
= value;
            }

        }


        
public string SQL_Query
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
get
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
return return_sql;
            }

            
set
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                _sql 
= value;
            }

        }


        
public string LS_SQL
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
get
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
return ls_sql;
            }

        }

              

        
#endregion


ContractedBlock.gifExpandedBlockStart.gif        
方法#region 方法
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 添加
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void btnAddNew_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
this.btnDel.Enabled = true;
            
string column = cmb_column.Text.ToString();
            
string compare = cmb_compare.Text.ToString();
            
string logic = cmb_logic.Text.ToString();
            
string columnValue = cmb_column.SelectedValue.ToString();
            
string name = "";
            
string value;
            
string sql;
            
if (txtValue.Visible)//文本框
ExpandedSubBlockStart.gifContractedSubBlock.gif
            {
                value 
= (txtValue.Text.Trim().ToString().Length == 0? "" : txtValue.Text.Trim().ToString();
                
if (value == "")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    MessageBox.Show(
"值不能为空,请输入!");
                    txtValue.Focus();
                    
return;
                }


                
if (cmb_compare.SelectedValue.ToString() == "like")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    sql 
= "LOWER(" + columnValue + ")" + " " + cmb_compare.SelectedValue + " '%" + value.ToLower() + "%'";
                }

                
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    sql 
= "LOWER(" + columnValue + ")" + " " + cmb_compare.SelectedValue + " '" + value.ToLower() + "'";
                }


                dataGridView.Rows.Add(column, compare, value, logic, name, sql);

                txtValue.Text 
= "";
            }

            
else//是下拉框时
ExpandedSubBlockStart.gifContractedSubBlock.gif
            {
                value 
= cmbValue.Text;//下拉列表当前文本
                name = cmbValue.SelectedValue.ToString();//下拉当前值
                sql =  columnValue + " " + cmb_compare.SelectedValue + " '" + name + "'";

                dataGridView.Rows.Add(column, compare, value, logic, name, sql);
            }

        }


        
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 删除当前行
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void btnDel_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
//移除当前行

            
if (dataGridView.Rows.Count >0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
if (dataGridView.CurrentRow != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    dataGridView.Rows.Remove(dataGridView.CurrentRow);
                }

            }

            
//判断DataGridView中是否有数据,若无数据则设置删除按键Enabled = false
            if (dataGridView.Rows.Count == 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                btnDel.Enabled 
= false;
            }

        }

        
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 确定
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void btnOK_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            return_sql 
= _sql;

            
int rowcount = dataGridView.Rows.Count;
            
string txtValue;

            
if (rowcount == 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                buttonDialogResult 
= DialogResult.OK;
                
return;
            }


            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
while (dataGridView.Rows[rowcount - 1].Cells["dg_column"].Value == null)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    
if (rowcount > 1)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        rowcount
--;
                    }

                    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        
return;
                    }

                }



                
if (rowcount > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    
for (int i = 0; i < rowcount; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        
if (i == rowcount - 1)
ExpandedSubBlockStart.gifContractedSubBlock.gif                        
{
                            ls_sql 
+= dataGridView.Rows[i].Cells["dg_sql"].Value.ToString();
                        }

                        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                        
{
                            
string logic = dataGridView.Rows[i].Cells["dg_logic"].Value.ToString();
                            
if (logic == "并且")
ExpandedSubBlockStart.gifContractedSubBlock.gif                            
{
                                ls_sql 
+= dataGridView.Rows[i].Cells["dg_sql"].Value.ToString() + " and ";
                            }

                            
if (logic == "")
ExpandedSubBlockStart.gifContractedSubBlock.gif                            
{
                                ls_sql 
+= dataGridView.Rows[i].Cells["dg_sql"].Value.ToString() + " or ";
                            }

                        }

                    }

                }


                
if (ls_sql != "")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    ls_sql 
= "" + ls_sql + " )";
                    
int index = return_sql.ToLower().IndexOf("where");

                    
if (index >= 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        return_sql 
+= " and " + ls_sql;
                    }

                    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
{
                        return_sql 
+= " where " + ls_sql;
                    }


                }

                
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                }


                
            }

            
catch (Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                MessageBox.Show(ex.Message);
            }

            
finally
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                buttonDialogResult 
= DialogResult.OK;
                
this.Close();
            }


            
        }


ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 取消
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void btnCancel_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            buttonDialogResult 
= DialogResult.None;
            
//this.Close();
        }


        
#endregion

以上是以前开发的写的,在些也不多说了,有什么问题可以留言,谢谢

转载于:https://www.cnblogs.com/chhuic/archive/2009/10/06/1578474.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值