在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();
}
}
这个可以了 --------------------编程问答-------------------- --该字段为字母
SELECT * FROM 表 where 字段A like ''+@Fletter+'%'
--另该字段为中文
拼音首字母查询 --------------------编程问答-------------------- --------------------编程问答-------------------- AutoComplete --------------------编程问答-------------------- 在Text 正下方 放一个层 在Text 获得焦点的时候 开始读取数据库 模糊查询数据 然后 把内容添加到层里面去 当然 这样的话 要使用到Ajax技术 才行 --------------------编程问答--------------------
朋友,不错呢,收藏了 --------------------编程问答--------------------
--该字段为字母
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 +" '
这个是最基本的查询.还有高级查询
--------------------编程问答--------------------
是可以哒,楼主
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