【三层架构】搜索模块
来源:互联网 发布:澳门网络真人现场赌博 编辑:程序博客网 时间:2024/06/17 00:30
一、界面设计
做一个框架可以放搜出来的表
添加一个gridview可以用来显示数据
编辑列
写属性
可用字段选择boundfield-在boundfiled属性里面添加sortExpression和datafield,以及要表头要显示的名字headertext.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="365px"> <Columns> <%--中文意思:列。放GridView控件里面的各列--%> <asp:BoundField DataField="kcLeixing" HeaderText="课程类型" SortExpression="kcLeixing" ItemStyle-HorizontalAlign="Center"> <ItemStyle HorizontalAlign="Center"></ItemStyle> </asp:BoundField> <asp:BoundField DataField="kcBiaoti" HeaderText="课程标题" SortExpression="kcBiaoti" ItemStyle-HorizontalAlign="Center"> <ItemStyle HorizontalAlign="Center"></ItemStyle> </asp:BoundField> <asp:BoundField DataField="kcJieshao" HeaderText="课程介绍" SortExpression="kcJieshao" ItemStyle-HorizontalAlign="Center"> <ItemStyle HorizontalAlign="Center"></ItemStyle> </asp:BoundField> <asp:BoundField DataField="dianzanshu" HeaderText="点赞数" SortExpression="dianzanshu" ItemStyle-HorizontalAlign="Center"> <ItemStyle HorizontalAlign="Center"></ItemStyle> </asp:BoundField> <asp:BoundField DataField="liulanshu" HeaderText="浏览数" SortExpression="liulanshu" ItemStyle-HorizontalAlign="Center"> <ItemStyle HorizontalAlign="Center"></ItemStyle> </asp:BoundField> <asp:BoundField DataField="xxRenshu" HeaderText="学习人数" SortExpression="xxRenshu" ItemStyle-HorizontalAlign="Center"> <ItemStyle HorizontalAlign="Center"></ItemStyle> </asp:BoundField> <asp:BoundField DataField="wcRenshu" HeaderText="完成人数" SortExpression="wcRenshu" ItemStyle-HorizontalAlign="Center"> <ItemStyle HorizontalAlign="Center"></ItemStyle> </asp:BoundField> </Columns> </asp:GridView>
二、后台代码
首先写sousuo.aspx.cs页面代码
要实现搜索功能,我们的逻辑要清晰。逻辑如下:在textbox里面输入关键词,点击搜索按钮,运行搜索按钮里面的代码,读取textbox里面的数据传递到搜索页面(sousuo.aspx)。
找一个东西保存传递过来的数据。
TextBoxsearch2.Text = Session["guanjianci"].ToString();
Session.Remove("guanjianci");
运行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实例, helios.BLL.sousuo bll = new helios.BLL.sousuo();在pageload()前面。
接下来去BLL层写BLL层里的代码
public DataSet GetList(string strWhere)//将从UI传过来的StrWhere传递到GetList里面 { return dal.GetList(strWhere);//将传过来的strWhere传递到dal层里面, } /// <summary> /// 得到一个对象实体。需要在Dal层中,设置一个GetModel的方法。 /// </summary> public helios.Model.sousuo GetModel(int kechengID) { return dal.GetModel(kechengID); }然后你又发现DAL还没建立起来呢,于是加上
private readonly helios.DAL.sousuo dal = new helios.DAL.sousuo();
接下来就是去DAL层
/// <summary>/// 获得数据列表/// </summary>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,也就是到此为止,} /// <summary> /// 得到一个对象实体。用于BLL得到一个实体对象 /// </summary> 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; } } /// <summary> /// 得到一个对象实体,这个实体对象用于GetModel实体对象里面。 /// </summary> 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; /// <summary> /// /// </summary> public int kechengID { set { _kechengid = value; } get { return _kechengid; } } /// <summary> /// /// </summary> public string kcLeixing { set { _kcleixing = value; } get { return _kcleixing; } } /// <summary> /// /// </summary> public string kcBiaoti { set { _kcbiaoti = value; } get { return _kcbiaoti; } } /// <summary> /// /// </summary> public string kcJieshao { set { _kcjieshao = value; } get { return _kcjieshao; } } /// <summary> /// /// </summary> public string kcBiaoqian { set { _kcbiaoqian = value; } get { return _kcbiaoqian; } } /// <summary> /// /// </summary> public DateTime scShijian { set { _scshijian = value; } get { return _scshijian; } } /// <summary> /// /// </summary> public string kcFengmianURL { set { _kcfengmianurl = value; } get { return _kcfengmianurl; } } /// <summary> /// /// </summary> public int? dianzanshu { set { _dianzanshu = value; } get { return _dianzanshu; } } /// <summary> /// /// </summary> public int? beicaishu { set { _beicaishu = value; } get { return _beicaishu; } } /// <summary> /// /// </summary> public int? liulanshu { set { _liulanshu = value; } get { return _liulanshu; } } /// <summary> /// /// </summary> public int? xxRenshu { set { _xxrenshu = value; } get { return _xxrenshu; } } /// <summary> /// /// </summary> public int? wcRenshu { set { _wcrenshu = value; } get { return _wcrenshu; } } #endregion Model不就是定义很多属性嘛。谁不会啊?小李子摆摆手。
于是我们就可以得到可爱的搜索功能了。
本文针对组员使用,略过很多小细节,如有疑问请提出。初来乍到,文章有认识错误的地方,请指教!谢谢!
0 0
- 【三层架构】搜索模块
- 三层架构——系统用户登录模块功能实现
- 【三层】三层架构初识
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- 三层架构
- vmware下的linux的host only上网配置
- unicode和中文转码
- swift学习2:基本语法
- 获取当前时间 并转为字符串
- Java的琐碎注意事项
- 【三层架构】搜索模块
- javascript闭包的理解和实例
- VS2013程序打包部署(图解)
- MAC环境使用Http模拟工具进行网络请求
- 初识母函数
- android uri
- Sharepoint online 创建模板与使用模板
- DNR脑神经递质5合3阶段再生疗法是什么?
- 回调函数