为了更好的去重用高级查询控件,将此控件做成用户控件。利用VS2005新建一个用控件扩展名为.ascx的文件,参考下图: ![]()
本高级查询的原理是:当用户选择选择内容时,相应的筛选条件,筛选范围进行动态的变化。将筛选条件保存在lblFilter标签中。利用DataView的RowFilter,对数据进行筛选,但为了更好的管理,将这些配置信息保存在表中。注:以下是对应的html源代码:
![]()
/>
以下是本页面对应的后台代码,主要是事件,属性,方法
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
另外,本用户控件还需要调用后台的类库,进行一些业务逻辑上的处理代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace WebClass
在本类库需要调用最基层的DBClass,是对数据库的最基村的操作,主要是进行读取数据,获取数据集的操作,在这里,不做详细书写。
经过编译成功后,新建网页,将此用户控件拖动到需要进行的页面。进行以下的编码,主要是设置GridView控件的ID,数据源注意使DataView,在这里可以将DataSet转换成DataView,可以在页面上一个按钮,高级查询,单击后,加载用户控件如下图所示:
![]()
我们可以看到,在它的下面是个GridView控件
这后我们对PageLoad,和图片中的高级查询按钮进行编写代码,如下:
public WebClass.Customer myCustomer = new WebClass.Customer();
protected void Page_Load(object sender, EventArgs e)
}
注:本高级查询的配置信息存储在数据表中(Advance_Query):
DROP TABLE Advance_Query;
CREATE TABLE Advance_Query
(
Tbl VARCHAR2(30) NOT NULL, --表名称 PK
Form VARCHAR2(30) NOT NULL, --所属窗体名称 pk
Field VARCHAR2(30) NOT NULL, --字段名称 pk
By_Name VARCHAR2(30) NOT NULL, --字段别名
Type VARCHAR2(1) NOT NULL, --字段类型名称
Flag VARCHAR2(1) NOT NULL, --标示 0:利用下拉框 1:用文本框
AreaSQL VARCHAR2(150), --当前值对应的查询语句 适合于:flag=0时使用
CONSTRAINT PK_Text PRIMARY KEY(Tbl,Form,Field)
);
这样,运行的你的页面,就可以做到高级查询。