文档章节

asp.net如何实现高级搜索功能

crossmix
 crossmix
发布于 2015/11/30 16:19
字数 830
阅读 61
收藏 0
点赞 0
评论 0

   开发搜索网站时,常常需要根据多个条件搜索一个指定结果。本实例在一个含有大量数据信息的搜索网站中实现了高级搜索功能。高级搜索主要通过复合条件查询来实现。运行本实例,程序将根据用户选择的信息类型和输入的信息名称在网站中进行搜索。另外,用户还可以指定一页中显示多少条记录。

图:


本例主要以asp.net网站为例,讲述如何运用SQL语句中的比较运算符。

为了方便用户使用SQL语句进行各种查询,在SQL语句中提供了几种常用的比较运算符,

图:

(1)新建一个网站,将其命名为HighSearch,默认主页为Default.aspx。

(2)Default.aspx页面用到的控件及用途

图:

(3)本实例主要用到了DataList控件分页技术。首先自定义一个dlDataBind()方法,该方法用来从数据库中查找出相关记录并计算出记录总数,然后对DataList控件进行数据绑定。该方法有4个参数:sqlstr、table、dkf和psize,它们分别表示要执行的SQL语句、数据表名、DataList控件要绑定的数据表主键和每页显示的记录数。

代码如下:

  1. public void dlDataBind(string sqlstr, 
    string table, string dkf, int psize)  
  2. {  
  3.  
  4.   int curpage = Convert.ToInt32(this.labPage.Text);  
  5.  
  6.   PagedDataSource ps = new PagedDataSource();  
  7.  
  8.   sqlconn.Open();  
  9.  
  10.   SqlDataAdapter MyAdapter = new SqlDataAdapter(sqlstr, sqlconn);  
  11.  
  12.   DataSet ds = new DataSet();  
  13.  
  14.   MyAdapter.Fill(ds, table);  
  15.  
  16.   ps.DataSource = ds.Tables[table].DefaultView;  
  17.  
  18.   ps.AllowPaging = true; //是否可以分页  
  19.  
  20.   ps.PageSize = psize; //显示的数量  
  21.  
  22.   ps.CurrentPageIndex = curpage - 1; //取得当前页的页码  
  23.  
  24.   this.lnkbtnUp.Enabled = true;  
  25.  
  26.   this.lnkbtnNext.Enabled = true;  
  27.  
  28.   this.lnkbtnBack.Enabled = true;  
  29.  
  30.   this.lnkbtnOne.Enabled = true;  
  31.  
  32.   if (curpage == 1)  
  33.  
  34.   {  
  35.  
  36.       this.lnkbtnOne.Enabled = false;//不显示第一页按钮  
  37.  
  38.       this.lnkbtnUp.Enabled = false;//不显示上一页按钮  
  39.  
  40.   }  
  41.  
  42.   if (curpage == ps.PageCount)  
  43.  
  44.   {  
  1.  
  2.       this.lnkbtnNext.Enabled = false;//不显示下一页  
  3.  
  4.       this.lnkbtnBack.Enabled = false;//不显示最后一页  
  5.  
  6.   }  
  7.  
  8.   this.labBackPage.Text = Convert.ToString(ps.PageCount);  
  9.  
  10.   this.dlInfo.DataSource = ps;  
  11.  
  12.   this.dlInfo.DataKeyField = dkf;  
  13.  
  14.   this.dlInfo.DataBind();  
  15.  
  16.   sqlconn.Close();  
二,实现高级搜索功能

dlDataBind()方法定义完成之后,还需要自定义一个dlInfoBind()方法来执行数据库查询操作,同时实现用户指定每页显示多少条记录的功能。

代码:

  1. public void dlInfoBind()  
  2. {  
  3.  
  4.   string sqlstr = "select * from tb_Info where 
    InfoName "
     + ddlISign.SelectedValue.Trim()  
  5.  
  6.   + " '%" + txtSKWord.Text.Trim() + "%' and 
    InfoType " + ddlSSign.SelectedValue.Trim()  
  7.  
  8.   + " '%" + ddlInfoType.SelectedValue.Trim() + "%'";  
  9.  
  10.   if (!sqloperate.comBind(sqlstr))  
  11.  
  12.   {  
  13.  
  14.       Response.Write("<script>alert('没有您要
    查询的结果,请重新输入')
    </script>");  
  15.  
  16.       Panel1.Visible = false;  
  17.  
  18.   }  
  19.  
  20.   else  
  21.  
  22.   {  
  23.  
  24.       if (ddlCount.SelectedValue == "1")  
  25.  
  26.       {  
  27.  
  28.       this.dlDataBind(sqlstr, "tb_Info", "InfoID", 1);  
  29.  
  30.       }  
  31.  
  32.       if (ddlCount.SelectedValue == "2")  
  33.  
  34.       {  
  35.  
  36.       this.dlDataBind(sqlstr, "tb_Info", "InfoID", 2);  
  37.  
  38.       }  
  39.  
  40.       if (ddlCount.SelectedValue == "3")  
  41.  
  42.       {  
  43.  
  44.       this.dlDataBind(sqlstr, "tb_Info", "InfoID", 3);  
  45.  
  46.       }  
  47.  
  48.       if (ddlCount.SelectedValue == "4")  
  49.  
  50.       {  
  51.  
  52.       this.dlDataBind(sqlstr, "tb_Info", "InfoID", 4);  
  53.  
  54.       }  
  55.  
  56.       if (ddlCount.SelectedValue == "5")  
  57.  
  58.       {  
  59.  
  60.       this.dlDataBind(sqlstr, "tb_Info", "InfoID", 5);  
  61.  
  62.       }  
  63.  
  64.       if (ddlCount.SelectedValue == "6")  
  65.  
  66.       {  
  67.  
  68.       this.dlDataBind(sqlstr, "tb_Info", "InfoID", 6);  
  69.  
  70.       }  
  71.  
  72.       if (ddlCount.SelectedValue == "7")  
  73.  
  74.       {  
  75.  
  76.       this.dlDataBind(sqlstr, "tb_Info", "InfoID", 7);  
  77.  
  78.       }  
  79.  
  80.       if (ddlCount.SelectedValue == "8")  
  81.  
  82.       {  
  83.  
  84.       this.dlDataBind(sqlstr, "tb_Info", "InfoID", 8);  
  85.  
  86.       }  
  87.  
  88.       if (ddlCount.SelectedValue == "9")  
  89.  
  90.       {  
  91.  
  92.       this.dlDataBind(sqlstr, "tb_Info", "InfoID", 9);  
  93.  
  94.       }  
  95.  
  96.       if (ddlCount.SelectedValue == "10")  
  97.  
  98.       {  

  
  
  1.  
  2.       this.dlDataBind(sqlstr, "tb_Info", "InfoID", 10);  
  3.  
  4.       }  
  5.  
  6.   }  

当用户单击"搜索"按钮时,程序调用dlInfoBind()方法进行数据信息检索操作。"搜索"按钮的Click事件代码如下:


  
  
  1. protected void btnSearch_Click(object sender, EventArgs e)  
  2. {  
  3.  
  4.   this.dlInfoBind( );  

心法领悟025:如何锁定Application对象。

由于Application对象属于网站的全局变量,因此经常会出现多人同时访问和修改对象的情况。为了避免两个会话同时修改Application对象,需要在修改前锁定Application对象,修改后再解锁Application对象。Application对象可以使用Lock()方法实现加锁功能,使用UnLock()方法实现解锁功能,相关代码如下:


  
  
  1. Application.Lock();//锁定Application对象  
  2. Application.UnLock();//解锁Application对象 
end。

adiOS

© 著作权归作者所有

共有 人打赏支持
crossmix
粉丝 64
博文 302
码字总数 645711
作品 0
广州
高级程序员
用DevExpress做界面开发:ASP.NET MVC GridView数据处理 | 附在线演示

DevExpress ASP.NET MVC下面有一个功能非常完善的GridView控件,它内置数据编辑器,数据加载速度超快,占用最小的内存资源,广泛的数据形成选项,还支持iOS、Android、Window Phone移动触摸。...

百mumu ⋅ 2015/11/18 ⋅ 0

高效界面开发:ASP.NET MVC GridView强悍的数据处理 | 附在线演示

DevExpress ASP.NET MVC下面有一个功能非常完善的GridView控件,它内置数据编辑器,数据加载速度超快,占用最小的内存资源,广泛的数据形成选项,还支持iOS、Android、Window Phone移动触摸。...

百mumu ⋅ 2015/12/10 ⋅ 0

自学MVC看这里——全网最全ASP.NET MVC 教程汇总

MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC。小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口。本文从Why,W...

葡萄城控件技术团队 ⋅ 2016/08/18 ⋅ 0

asp.net的Ajax学习进阶

asp.net的Ajax学习进阶 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/ 时间:2007.6.3 1.什么是Ajax? 2006年忽如一夜春风来,众多涉及到Web开发的站点都在谈Ajax,那么到底什么是Aja...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

明天回家,总结一下,提前拜个早年

我不是技术牛人,但是基本文章上总是发首页,为什么呢?因为我每次写文章都很努力,希望我的努力会给你带来收获,明年会更加努力滴。明天就回家了,在这里祝所有的园友们新春愉快。新的一年心...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

分享16个javascript&jQuery的MVC教程

日期:2011/12/19 来源:GBin1.com 2011即将过去我们将在几周后迎来新的一年。 这里我们将介绍10多个js和jQuery的MVC教程希望大家喜欢! jQuery MVC 1. AJAX - Spring MVC 3和jQuery的整合 ...

gbin1 ⋅ 2011/12/21 ⋅ 5

【初学者指南】在ASP.NET MVC 5中创建GridView

介绍 在这篇文章中,我们将会学习如何在 ASP.NET MVC 中创建一个 gridview,就像 ASP.NET Web 表单中的 gridview 一样。服务器端和客户端有许多可用的第三方库,这些库能够提供所有必需的功能...

葡萄城控件技术团队 ⋅ 2016/11/15 ⋅ 0

ASP.NET分页控件--MvcPager

MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList<T>类和相关方法,经过站...

匿名 ⋅ 2010/11/04 ⋅ 0

YxShop的网友评论

YxShop 是一款采用 ASP.NET 开发的开源网上电子商城软件。 YxShop 的功能特点: 1、前台功能说明 首页、商品列表、特价商品、拍卖、团购、品牌专卖、注册、登陆、留言, 我的圈子,缺货登记,帮...

红薯 ⋅ 2009/12/11 ⋅ 1

电子商城软件--YxShop

YxShop 是一款采用 ASP.NET 开发的开源网上电子商城软件。 YxShop 的功能特点: 1、前台功能说明 首页、商品列表、特价商品、拍卖、团购、品牌专卖、注册、登陆、留言, 我的圈子,缺货登记,帮...

匿名 ⋅ 2009/01/26 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 19分钟前 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 45分钟前 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao ⋅ 昨天 ⋅ 0

聊聊spring cloud netflix的HystrixCommands

序 本文主要研究一下spring cloud netflix的HystrixCommands。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clo......

go4it ⋅ 昨天 ⋅ 0

Confluence 6 从其他备份中恢复数据

一般来说,Confluence 数据库可以从 Administration Console 或者 Confluence Setup Wizard 中进行恢复。 如果你在恢复压缩的 XML 备份的时候遇到了问题,你还是可以对整个站点进行恢复的,如...

honeymose ⋅ 昨天 ⋅ 0

myeclipse10 快速搭建spring boot开发环境(入门)

1.创建一个maven的web项目 注意上面标红的部分记得选上 2.创建的maven目录结构,有缺失的目录可以自己建立目录补充 补充后 这时候一个maven的web项目创建完成 3.配置pom.xml配置文件 <proje...

小海bug ⋅ 昨天 ⋅ 0

nginx.conf

=========================================================================== nginx.conf =========================================================================== user nobody; #......

A__17 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部