当前位置:编程学习 > C#/ASP.NET >>

在asp.net下,用c#开发,如何实现模糊查询

我在程序的一个查询页面里,用到了TextBox框,对应的是某基础数据表里的某个字段
想实现:在文本框里输入:z,然后所有这个对应字段里对应是z拼音的会显示出来?请问这个怎么实现? --------------------编程问答-------------------- 百度效果

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
   
 <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>  
   
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
 <html xmlns="http://www.w3.org/1999/xhtml">  
 <head runat="server">  
     <title>AJAX控件之AutoComplete</title>  
 </head>  
 <body style="text-align: center">  
    <form id="form1" runat="server">  
         <asp:ScriptManager ID="ScriptManager1" runat="server" />  
         <div>  
             <asp:TextBox ID="MyAuto" runat="server" Width="191px"></asp:TextBox><br />  
             <br />  
             <cc1:AutoCompleteExtender ID="ace" runat="server" CompletionInterval="100" MinimumPrefixLength="1"  
                 ServiceMethod="GetCompletionList" ServicePath="WebService.asmx" TargetControlID="MyAuto">  
             </cc1:AutoCompleteExtender>  
              </div>  
     </form>  
</body>  
</html>  


# using System;  
 using System.Web;  
 using System.Collections.Generic;  
 using System.Web.Services;  
 using System.Web.Services.Protocols;  
   
   
 /// <summary>  
 /// WebService 的摘要说明  
 /// </summary>  
 [WebService(Namespace = "http://tempuri.org/")]  
 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
 //用以调用Web Service方法签名  
 [System.Web.Script.Services.ScriptService]  
 public class WebService : System.Web.Services.WebService {  
   
     public WebService () {}  
   
     [WebMethod]  
     public string[] GetCompletionList(string prefixText, int count)  
     {  
         //if (count == 0)  
         //{  
         //    count = 10;  
         //}  
         Random random = new Random();  
         List<string> items = new List<string>(count);  
         for (int i = 0; i < count; i++)  
         {  
             char c1 = (char)random.Next(65,90);  
             char c2 = (char)random.Next(97, 122);  
             char c3 = (char)random.Next(48, 57);  
             char c4 = (char)random.Next(33, 43);  
             items.Add(prefixText + c1 + c2 + c3 + c4);  
         }  
         return items.ToArray();  
     }  
   
}  
--------------------编程问答--------------------
引用 1 楼 wxr0323 的回复:
百度效果

HTML code

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
   
 <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" ……

这个可以了   --------------------编程问答-------------------- --该字段为字母
SELECT * FROM 表 where 字段A like ''+@Fletter+'%' 
--另该字段为中文
拼音首字母查询 --------------------编程问答-------------------- --------------------编程问答-------------------- AutoComplete --------------------编程问答-------------------- 在Text 正下方 放一个层    在Text 获得焦点的时候  开始读取数据库 模糊查询数据 然后 把内容添加到层里面去        当然 这样的话 要使用到Ajax技术 才行       --------------------编程问答--------------------
引用 3 楼 fangxuan 的回复:
--该字段为字母
SELECT * FROM 表 where 字段A like ''+@Fletter+'%' 
--另该字段为中文
拼音首字母查询


朋友,不错呢,收藏了 --------------------编程问答--------------------
--该字段为字母
SELECT * FROM 表 where 字段A like ''+@Fletter+'%'
--另该字段为中文
拼音首字母查询


我的模糊查询就是这样做的 
--------------------编程问答-------------------- AutoComplete  --------------------编程问答-------------------- 具体层操作给我实现一下。
我以前在vb写cs程序的时候实现过。当文本框内容改变的时候触发这个事件,将模糊查询调用,然后查出来的添加到下拉列表框里。 --------------------编程问答-------------------- 我知道sql是这么写;
create proc getbookbykeyword
@author varchar(20),
@bookname varchar(50),
@isbn varchar(30)
as
select * from books where author like '%'+@author+'%' and bookname like '%'+@bookname+'%'
and isbn like '%'+@isbn+'%'
用的是存储过程。
页面这么弄我也在找高手 --------------------编程问答-------------------- select * from books where author like '%'+@author+'%' and bookname like '%'+@bookname+'%'
and isbn like '%'+@isbn+'%'
这个写法是错误的,无法使用索引,效率极低,应该把查询条件前面那个%去掉,只保留后面那个%
--------------------编程问答-------------------- SQL语句我是会写的,怎么样跟页面控件结合起来! --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 相当于让一个文本框里之前输入的内容有记忆功能,再一次输入的时候,自动会显示上一次输入的内容提示。 --------------------编程问答-------------------- 用Ajax不是很清晰么。 --------------------编程问答-------------------- 如果带有记忆功能,本身这个textbox控件好象就具有。 --------------------编程问答-------------------- select * from table where name like '% "+ textbox.text +" '

我以前好像这样搞过
--------------------编程问答-------------------- select * from table where name like '% "+ textbox.text +" '
这个是最基本的查询.还有高级查询


--------------------编程问答--------------------
引用 1 楼 wxr0323 的回复:
百度效果
HTML code

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
   
 <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagP……

是可以哒,楼主
jquery也可以实现。 --------------------编程问答-------------------- 呵呵 建议你看看sql教程 --------------------编程问答-------------------- 很简单地,网上有很多代码 --------------------编程问答-------------------- 学习啦 --------------------编程问答-------------------- 说AutoComplete 都是坑爹货,别个人是问asp.net里面的 --------------------编程问答-------------------- 帮你顶,希望有高手解决 --------------------编程问答-------------------- 帮你顶上去,等待学习 --------------------编程问答--------------------

var b;
    $.ajax({
        type: "get",
        url: encodeURI("../ashx/日报表.ashx"),
        data: { "action": "员工档案" },
        cache: false,
        async: false,
        dataType: "json",
        success: function (data) {
            if (data.msg == "1") {
                b = data.msgbox;
            }
        },
        error: function (error) {
            alert("error");
        }
    });
    $('#keyword').autocomplete(b, {
        max: 200, //列表里的条目数 
        minChars: 0, //自动完成激活之前填入的最小字符 
        width: 138, //提示的宽度,溢出隐藏 
        scrollHeight: 300, //提示的高度,溢出显示滚动条 
        matchContains: true, //包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示 
        autoFill: false, //自动填充 
        formatItem: function (row, i, max) {
            return row.First;
        },
        formatMatch: function (row, i, max) {
            return row.Second + row.First;
        },
        formatResult: function (row) {
            return row.First;
        }
    })
--------------------编程问答--------------------

<script type="text/javascript" src="../js/jquery-1.4.1.min.js"></script> 
<script type="text/javascript" src="/Scripts/jquery.autocomplete.min.js"></script> 
<link rel="Stylesheet" href="/Scripts/jquery.autocomplete.css" /> 
--------------------编程问答-------------------- 这个可以将中文转换为拼音字符串

foreach (char c in str)
            {
                if ((int)c >= 33 && (int)c <= 126)
                {
                    tempStr += c.ToString();
                }
                else
                {
                    tempStr += GetPYChar(c.ToString());
                }
            }

然后判断这个拼音串中有你输入的字母 --------------------编程问答-------------------- 以前做过一个:
input 的onchange 事件,触发js function 调用ajax 查询db 数据
input下隐藏一个input text等宽的div ,ajax 返回结果时 ,把结果写进div 并显示成list样式。

基本就这样了 --------------------编程问答-------------------- 除
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,