加载数据库表全部数据到GridView控件,但通过查询条件在GridView显示一行或几行数据
拉一个GridView控件在前台设计,设置其所需要的全部属性。而后操作数据库,连接,写查询数据库表数据语句,绑定数据,显示数据,这些都是已经司空见惯的步骤了,可以说没什么可说的。这些东西,只要是学过开发的,我想没有不会的。今天我所讲的是,不仅在GridView控件里加载全部数据,一旦有了查询条件,查询出来的数据还显示在这个GridView中。意思就是下面的这两张图片:
这张图片就是加载数据库表数据,显示所有的数据。一旦数据量大了,我们不好翻阅,就有了查询功能。其实,所谓的查询功能不过是查询语句的where条件,没有查询条件的时候不加载where条件,有查询条件的时候就以查询条件查询出来的数据显示。如下图:
大致意思,就如上述,一个GridView控件显示数据,一个查询条件输入框以及触发查询条件的按钮。有必要在这里说一下,请看到第一个图中的TextBox输入框,框体里有一个提示文本“按设备名称查询...”,有两点提示:
1)、当鼠标没有放在框体上时,框体有显示“按设备名称查询...”的文本字样,如果要输入查询条件的时候,框体里面的那个文本就会消失,再移开鼠标时又会显示其文本。实现这一功能要在cs后台代码Page_Load()方法中加载两句代码,
this.txtSelect.Attributes.Add("onfocus", "if (this.value=='按设备名称查询...') this.value=''");
this.txtSelect.Attributes.Add("onblur", "if (this.value=='') this.value='按设备名称查询...'");
2)、在输入查询条件的时候,要判断框体内的值,所以一定得考虑它本身固有的文本'按设备名称查询...',就是下面的这个if判断代码,后面会有详细提及。
if (this.txtSelect.Text.Trim() != "" && this.txtSelect.Text != "按设备名称查询...")
前台界面的设计就不在详加介绍,主要说说后台代码的实现。。。
首先,就是写数据库帮助类,链接数据库,操作数据库方法,如果您需要请到下面的链接下载(访问密码是:be3e)
http://yunpan.cn/QePezBE6VC5sF
其次,我用到是StringBuilder这个可变的字符串,用它来分割查询语句,(需要添加引用:using System.Text;)。查询数据,返回dataset数据缓存。
/// <summary> /// 在GridView中绑定设备信息表的数据(传参数) /// </summary> public DataSet GetList(string strWhere) { DataSet dset = null;//操作数据库结果 string sql = "";//SQL语句 try { //打开数据库 helper.Connect(); StringBuilder strSql = new StringBuilder(); //查询xxt_registration表记录 sql = "select r.id,r.name,d.name tname,r.ip,r.port,r.time,r.location,r.installtime,d.misc from xxt_registration r full outer join xxt_devicetype d on r.type=d.id "; strSql.Append(sql); if (strWhere.Trim() != "") { strSql.Append(" where " + strWhere); } // 执行查询命令 dset = helper.Query(strSql.ToString()); } catch (Exception E) { E.Message.ToString(); } finally { //关闭数据库 helper.Close_Up(); } return dset; }
紧接着写一个绑定的方法,用于判断是否需要查询条件的使用。
/// <summary> /// 在GridView中绑定xxt_registration表的数据 /// </summary> public void BindData_Registration() { DataSet dset; StringBuilder strWhere = new StringBuilder(); if (this.txtSelect.Text.Trim() != "" && this.txtSelect.Text != "按设备名称查询...") { strWhere.AppendFormat("r.name like '{0}'", this.txtSelect.Text.Trim()); } dset = GetList(strWhere.ToString()); GridView.DataSource = dset; GridView.DataBind(); }
上面的代码无需解释,想必都看的懂。
最后,将绑定方法加载到Page_Load()以及查询按钮的Click事件中,大致的功能就是这样。。。
也许有更多的办法实现,这只是我的一家之言,仅供参考!!!