一、界面设计
做一个框架可以放搜出来的表

添加一个gridview可以用来显示数据
编辑列
写属性
可用字段选择boundfield-在boundfiled属性里面添加sortExpression和datafield,以及要表头要显示的名字headertext.
<%--中文意思:列。放GridView控件里面的各列--%>
二、后台代码
首先写sousuo.aspx.cs页面代码
要实现搜索功能,我们的逻辑要清晰。逻辑如下:在textbox里面输入关键词,点击搜索按钮,运行搜索按钮里面的代码,读取textbox里面的数据传递到搜索页面(sousuo.aspx)。
找一个东西保存传递过来的数据。
运行bindData()显示数据。
public void BindData() { DataSet dsWeikecheng = new DataSet();//新建一个叫做ds的dataset实例,用于存放从数据库中读取的数据。 StringBuilder strWhere = new StringBuilder();//新建一个strWhere 语句。就相当于string的高级版,操作多个字符串的时候使用,效率比string高 if (TextBoxsearch2.Text.Trim() != "") //trim,一个string类特有的属性(方法),使得去掉文本框中两边输入的空格只剩下输入的字符或数字 { strWhere.AppendFormat("kcBiaoti like '%{0}%' or kcLeixing like '%{0}%'", TextBoxsearch2.Text.Trim()); //AppendFormat是使用类似String.Format方式追加具备一定格式的字符串。Append是直接添加字符。 dsWeikecheng = bll.GetList(strWhere.ToString()); //将strWhere这个实例字符串语句传递到已经被实例化的bll层的GetList方法里面。获得一个实例化过的真真正正的dataset GridView1.DataSource = dsWeikecheng; //gridView里面的数据源从哪里来呢,就从一个实例化过的真真正正的dataset里来,它的名字叫做ds. //数据源已经有了,但是还没有绑定啊,那还不赶紧绑定啊。 GridView1.DataBind(); //将数据源绑定到在designer.cs里面声明过的aspxGridView 控件中。没有?赶紧在你要显示的页面里面建一个啊。 } else { ltishi.Visible = true;//不要理他吧。 } }
这个时候你会发现一些错误,不如bll不存在啊、getlist()不存在啊
接下来去BLL层写BLL层里的代码
public DataSet GetList(string strWhere)//将从UI传过来的StrWhere传递到GetList里面 { return dal.GetList(strWhere);//将传过来的strWhere传递到dal层里面, } /// /// 得到一个对象实体。需要在Dal层中,设置一个GetModel的方法。 /// public helios.Model.sousuo GetModel(int kechengID) { return dal.GetModel(kechengID); }
然后你又发现DAL还没建立起来呢,于是加上
private readonly helios.DAL.sousuo dal = new helios.DAL.sousuo();
接下来就是去DAL层
/// /// 获得数据列表 /// public DataSet GetList(string strWhere)//将从BLL层传过来strWhere放到GetList里面跑一圈。 { StringBuilder strSql=new StringBuilder(); strSql.Append("select kechengID,kcLeixing,kcBiaoti,kcJieshao,scShijian,kcFengmianURL,dianzanshu,beicaishu,liulanshu,xxRenshu,wcRenshu "); strSql.Append(" FROM Lcts "); if(strWhere.Trim()!="") { strSql.Append(" where "+strWhere);//得到一个完整的sql查询语句——strSQL语句,用于查询数据库 } return DbHelperSQL.Query(strSql.ToString());//执行查询语句,返回DataSet,也就是到此为止, } /// /// 得到一个对象实体。用于BLL得到一个实体对象 /// public helios.Model.Controls.header GetModel(int kechengID) { StringBuilder strSql = new StringBuilder();//用来对很多字符串进行操作,减少内存占用量。 strSql.Append("select top 1 kechengID,kcLeixing,kcBiaoti,kcJieshao,kcFengmianURL,dianzanshu,beicaishu,liulanshu,xxRenshu,wcRenshu from Lcts ");//添加字符串 strSql.Append(" where kechengID=@kechengID");//添加字符串 SqlParameter[] parameters = { new SqlParameter("@kechengID", SqlDbType.Int,4) };//sqlparameter表示Sqlcommond的参数,也可以是它到 DataSet 列的映射 parameters[0].Value = kechengID; helios.Model.Controls.header model = new helios.Model.Controls.header();//实例化一个header模型 DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters); //它是从数据源中检索到的数据在内存中的缓存。新建一个这样的缓存实例。 DataSet 由一组 DataTable 对象组成 // DataTable 是 ADO.NET 库中的核心对象。 其他使用 DataTable 的对象包括 DataSet 和 DataView。 if (ds.Tables[0].Rows.Count > 0) { return DataRowToModel(ds.Tables[0].Rows[0]); } else { return null; } } /// /// 得到一个对象实体,这个实体对象用于GetModel实体对象里面。 /// public helios.Model.Controls.header DataRowToModel(DataRow row) { helios.Model.Controls.header model = new helios.Model.Controls.header(); if (row != null) { if (row["kechengID"] != null && row["kechengID"].ToString() != "") { model.kechengID = int.Parse(row["kechengID"].ToString()); } if (row["kcLeixing"] != null) { model.kcLeixing = row["kcLeixing"].ToString(); } if (row["kcBiaoti"] != null) { model.kcBiaoti = row["kcBiaoti"].ToString(); } if (row["kcJieshao"] != null) { model.kcJieshao = row["kcJieshao"].ToString(); } //if(row["scShijian"]!=null && row["scShijian"].ToString()!="") //{ // model.scShijian=DateTime.Parse(row["scShijian"].ToString()); //} if (row["kcFengmianURL"] != null) { model.kcFengmianURL = row["kcFengmianURL"].ToString(); } if (row["dianzanshu"] != null && row["dianzanshu"].ToString() != "") { model.dianzanshu = int.Parse(row["dianzanshu"].ToString()); } if (row["beicaishu"] != null && row["beicaishu"].ToString() != "") { model.beicaishu = int.Parse(row["beicaishu"].ToString()); } if (row["liulanshu"] != null && row["liulanshu"].ToString() != "") { model.liulanshu = int.Parse(row["liulanshu"].ToString()); } if (row["xxRenshu"] != null && row["xxRenshu"].ToString() != "") { model.xxRenshu = int.Parse(row["xxRenshu"].ToString()); } if (row["wcRenshu"] != null && row["wcRenshu"].ToString() != "") { model.wcRenshu = int.Parse(row["wcRenshu"].ToString()); } } return model; }
至此BLL层不会出现错误了
但是DAL层又出现了错误了,因为没有建立Model实例啊,于是我们只能
去Model层探险咯
#region Model private int _kechengid; private string _kcleixing; private string _kcbiaoti; private string _kcjieshao; private string _kcbiaoqian; private DateTime _scshijian; private string _kcfengmianurl = "~/images/avart.jpg"; private int? _dianzanshu = 0; private int? _beicaishu = 0; private int? _liulanshu = 0; private int? _xxrenshu = 0; private int? _wcrenshu = 0; /// /// /// public int kechengID { set { _kechengid = value; } get { return _kechengid; } } /// /// /// public string kcLeixing { set { _kcleixing = value; } get { return _kcleixing; } } /// /// /// public string kcBiaoti { set { _kcbiaoti = value; } get { return _kcbiaoti; } } /// /// /// public string kcJieshao { set { _kcjieshao = value; } get { return _kcjieshao; } } /// /// /// public string kcBiaoqian { set { _kcbiaoqian = value; } get { return _kcbiaoqian; } } /// /// /// public DateTime scShijian { set { _scshijian = value; } get { return _scshijian; } } /// /// /// public string kcFengmianURL { set { _kcfengmianurl = value; } get { return _kcfengmianurl; } } /// /// /// public int? dianzanshu { set { _dianzanshu = value; } get { return _dianzanshu; } } /// /// /// public int? beicaishu { set { _beicaishu = value; } get { return _beicaishu; } } /// /// /// public int? liulanshu { set { _liulanshu = value; } get { return _liulanshu; } } /// /// /// public int? xxRenshu { set { _xxrenshu = value; } get { return _xxrenshu; } } /// /// /// public int? wcRenshu { set { _wcrenshu = value; } get { return _wcrenshu; } } #endregion Model
不就是定义很多属性嘛。谁不会啊?小李子摆摆手。
于是我们就可以得到可爱的搜索功能了。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220907.html原文链接:https://javaforall.net
