加载数据库表全部数据到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事件中,大致的功能就是这样。。。

也许有更多的办法实现,这只是我的一家之言,仅供参考!!!

原文地址:https://www.cnblogs.com/litao4047/p/3135734.html