原文:.Net 文本框实现内容提示(仿Google、Baidu)

1.Demo下载:

文本框实现内容提示(仿Google、Baidu).rar

2.创建数据库、表(我用的sqlserver2008数据库)

 CREATE TABLE Ceshi
(
id VARCHAR() PRIMARY KEY NOT NULL,
cname VARCHAR()
)
GO
INSERT INTO Ceshi
SELECT NEWID(),'jack1' UNION
SELECT NEWID(),'jack2' UNION
SELECT NEWID(),'jack3' UNION
SELECT NEWID(),'jack4' UNION
SELECT NEWID(),'jack5' UNION
SELECT NEWID(),'peter1' UNION
SELECT NEWID(),'peter2' UNION
SELECT NEWID(),'peter3' UNION
SELECT NEWID(),'peter4' UNION
SELECT NEWID(),'peter5'
go

3.创建自定义函数

 create function [dbo].[f_GetPy](@str nvarchar())
returns nvarchar()
as
begin
declare @strlen int,@re nvarchar()
declare @t table(chr nchar() collate Chinese_PRC_CI_AS,letter nchar())
insert into @t(chr,letter)
select '吖 ', 'A ' union all select '八 ', 'B ' union all
select '嚓 ', 'C ' union all select '咑 ', 'D ' union all
select '妸 ', 'E ' union all select '发 ', 'F ' union all
select '旮 ', 'G ' union all select '铪 ', 'H ' union all
select '丌 ', 'J ' union all select '咔 ', 'K ' union all
select '垃 ', 'L ' union all select '嘸 ', 'M ' union all
select '拏 ', 'N ' union all select '噢 ', 'O ' union all
select '妑 ', 'P ' union all select '七 ', 'Q ' union all
select '呥 ', 'R ' union all select '仨 ', 'S ' union all
select '他 ', 'T ' union all select '屲 ', 'W ' union all
select '夕 ', 'X ' union all select '丫 ', 'Y ' union all
select '帀 ', 'Z '
select @strlen=len(@str),@re= ' '
while @strlen>
begin
select top @re=letter+@re,@strlen=@strlen-
from @t a where chr <=substring(@str,@strlen,)
order by chr desc
if @@rowcount=
select @re=substring(@str,@strlen,)+@re,@strlen=@strlen-
end
return(@re)
end
GO

4.asp.net前台页面(需要添加2个引用:AjaxControlToolkit.dll,AutoCompleteExtra.dll)

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TextBoxAuto.aspx.cs" Inherits="WebApplication1.TextBoxAuto" %>

 <%@ Register Assembly="AutoCompleteExtra" Namespace="AutoCompleteExtra" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.searchTextBox
{
border: 1px solid #e1e1e1;
border-collapse: separate;
border-spacing: ;
padding: 2px 2px 2px 2px;
white-space: nowrap;
margin-left: 2px;
height: 28px;
line-height: 28px;
margin-right: 5px;
font-family: 微软雅黑,宋体;
font-size: 14px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div>
<div class="dd2">
请输入姓名: <asp:TextBox CssClass="searchTextBox" runat="server" ID="txtCompanyName" Style="width: 280px;"></asp:TextBox>
<cc1:AutoCompleteExtraExtender ID="AutoCompleteExtraExtender1" runat="server" ServiceMethod="GetCompanyNameList"
TargetControlID="txtCompanyName" AsyncPostback="false" UseContextKey="True" AutoPostback="false"
MinimumPrefixLength="" CompletionInterval="">
</cc1:AutoCompleteExtraExtender>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>

5.后台页面

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Oceansoft.Net.Bll; namespace WebApplication1
{
public partial class TextBoxAuto : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ } [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static string[][] GetCompanyNameList(string prefixText, int count, string contextKey)
{
//获取自动完成的选项数据
List<string[]> list = new List<string[]>();
List<string> nameList = new List<string>();
List<string> idList = new List<string>();
CeshiManage ceshimanage = new CeshiManage(); ceshimanage.GetTopUserName(count, prefixText.ToUpper(), out idList, out nameList);
for (int i = ; i < nameList.Count; i++)
{
string[] Respuesta = new string[];
Respuesta[] = nameList[i];
Respuesta[] = idList[i];
list.Add(Respuesta);
}
return list.ToArray();
}
}
}

6.后台页面用到的方法(管理类)

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using Oceansoft.Net.Bll;
using SubSonic;
using System.Transactions; using System.Data;
using Oceansoft.Net.Dal; namespace Oceansoft.Net.Bll
{
/// <summary>
/// :ceshi
/// :jibp
/// :2014-2-27 15:52:15
///</summary>
public class CeshiManage
{ private SqlQuery m_sqlquery = Oceansoft.Net.Dal.DB.Select().From(Ceshi.Schema); /// <summary>
/// Ceshi查询器
/// </summary>
public SqlQuery CeshiSelecter
{
get { return m_sqlquery; }
set { m_sqlquery = value; }
} /// <summary>
/// 构造函数,设置查询器
///</summary>
public CeshiManage()
{
m_sqlquery = m_sqlquery.Where("id").IsNotEqualTo("");
} #region Ceshi管理 /// <summary>
/// 获取ceshi列表
/// </summary>
/// <returns></returns>
public List<Ceshi> getCeshiList()
{ return CeshiSelecter.ExecuteTypedList<Ceshi>();
} /// <summary>
/// 获取ceshi列表,同时分页操作
/// </summary>
/// <returns></returns>
public List<Ceshi> getCeshiList(int currentPage, int pageSize, out int RecordCount)
{
RecordCount = m_sqlquery.GetRecordCount();
return CeshiSelecter
.Paged(currentPage, pageSize)
.ExecuteTypedList<Ceshi>();
} /// <summary>
/// 新增 ceshi
/// </summary>
/// <param name="HandleEntity"></param>
/// <param name="sErr"></param>
/// <returns></returns>
public bool AddCeshi(Ceshi beAddMode, out string sErr)
{ sErr = "";
bool bRet = true;
try
{ using (TransactionScope sc = new TransactionScope())
{
//此处写代码
//流水编号的生成
//GenerateNo No = new GenerateNo();
//No.TableName = "Ceshi"; //表名
//No.NoName = "XXX"; //流水号前字母
//No.ColName = "CC_Number"; //编号字段
//No.CreateTime = "CC_CreateTime"; //日期字段
//string BillNo = "";
//Customer_Comp.CC_Number = No.AutoGenerateNo();
beAddMode.IsNew = true;
beAddMode.Save();
//LogHelper.WriteLog(logType.新增 , logModule.Deptrelation,"ceshi新增成功("+beAddMode.GetPrimaryKeyValue().ToString()
//+")!");
//如果生成扩展类请使用add方法方法
sc.Complete();
}
}
catch (Exception ex)
{
sErr = "ceshi新增不成功!";
return false;
} sErr = "ceshi新增成功!";
return bRet; } /// <summary>
/// 修改 ceshi
/// </summary>
/// <param name="HandleEntity"></param>
/// <param name="sErr"></param>
/// <returns></returns>
public bool UpdataCeshi(Ceshi beUpdataMode, out string sErr)
{ sErr = "";
bool bRet = true;
try
{ using (TransactionScope sc = new TransactionScope())
{ //如果生成扩展类请使用Update()方法方法
beUpdataMode.IsNew = false;
beUpdataMode.Save();
//LogHelper.WriteLog(logType.修改 , logModule.Deptrelation,"ceshi修改成功("+beUpdataMode.GetPrimaryKeyValue().ToString()
//+")!"); sc.Complete();
}
}
catch (Exception ex)
{
sErr = "ceshi修改不成功!";
return false;
} sErr = "ceshi修改成功!";
return bRet; } /// <summary>
/// 删除 ceshi
/// </summary>
/// <param name="HandleEntity"></param>
/// <param name="sErr"></param>
/// <returns></returns>
public bool DeleteCeshi(Ceshi beDeleteMode, out string sErr)
{
sErr = "";
bool bRet = true;
try
{ using (TransactionScope sc = new TransactionScope())
{
//如果生成扩展类请使用Delete()方法方法
Ceshi.Delete(beDeleteMode.GetPrimaryKeyValue());
//LogHelper.WriteLog(logType.删除 , logModule.Deptrelation,"ceshi删除成功("+beDeleteMode.GetPrimaryKeyValue().ToString()
//+")!");
sc.Complete();
}
}
catch (Exception ex)
{
sErr = "ceshi删除不成功!";
return false;
} sErr = "ceshi删除成功!";
return bRet; } /// <summary>
/// 删除 ceshi 列表
/// </summary>
/// <param name="HandleEntity"></param>
/// <param name="sErr"></param>
/// <returns></returns>
public bool DeleteCeshiList(List<Ceshi> lstCeshi, out string sErr)
{ sErr = "";
int ii = ;
bool bRet = true;
try
{ using (TransactionScope sc = new TransactionScope())
{
//如果生成扩展类请使用Delete()方法方法
foreach (Ceshi bedelmode in lstCeshi)
{
ii++;
Ceshi.Delete(bedelmode.GetPrimaryKeyValue()); //LogHelper.WriteLog(logType.删除 , logModule.Deptrelation,"ceshi删除成功("+bedelmode.GetPrimaryKeyValue().ToString()
//+")!");
}
sc.Complete();
}
}
catch (Exception ex)
{
sErr = "ceshi删除不成功!";
return false;
} sErr = "共" + ii.ToString() + "条单据删除成功!";
return bRet; } public void GetTopUserName(int topCount, string name, out List<string> listId, out List<string> listcname)
{
string sql = string.Format(@"Select id,cname from(Select ROW_NUMBER() over(order by cname)as ROWNUM," +
"id,cname FROM [dbo].[Ceshi] where cname like '%" + name + "%' or dbo.f_GetPy(cname) like '%" + name + "%') as ta where ta.ROWNUM <= " + topCount);
DataTable dt = new DataTable();
QueryCommand qc = new InlineQuery().GetCommand(sql);
dt = DataService.GetDataSet(qc).Tables[];//将查询出来的数据集放到List中去(查询数据的方法,有很多,这边我用的是Subsonic类自带的查询方法)
listcname = new List<string>();
listId = new List<string>();
foreach (DataRow row in dt.Rows)
{ listId.Add(row[].ToString());
listcname.Add(row[].ToString()); } } #endregion }
}

7.webconfig配置

 <?xml version="1.0"?>

 <!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
--> <configuration>
<configSections>
<section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" requirePermission="false"/>
</configSections>
<connectionStrings>
<add name="DemoTo" connectionString="Data Source=172.17.118.197;Initial Catalog=DemoTo;User Id=sa;Password=password01!;" providerName="System.Data.SqlClient"/>
</connectionStrings>
<SubSonicService defaultProvider="DemoTo">
<providers> <add name="DemoTo" type="SubSonic.SqlDataProvider, SubSonic" connectionStringName="DemoTo" generatedNamespace="Oceansoft.Net" maxPoolSize=""/> </providers>
</SubSonicService> <system.web>
<compilation debug="true" targetFramework="4.0" /> <authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="" />
</authentication> <membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="" minRequiredPasswordLength="" minRequiredNonalphanumericCharacters="" passwordAttemptWindow=""
applicationName="/" />
</providers>
</membership> <profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile> <roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager> </system.web> <system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>

.Net 文本框实现内容提示(仿Google、Baidu)的更多相关文章

  1. 关于MFC文本框输入内容的获取 与 设置文本框的内容

    八月要开始做界面了<( ̄︶ ̄)/,然而目前只会用MFC╮(╯▽╰)╭ 好吧,言归正传,设置好文本框后,要获取用户输入的内容,可以用: GetDlgItemText() ; 这个函数有两个参数,第 ...

  2. 在chrome下的文本框sendkeys,提示element can't focus--解决方法

    在chrome下的文本框sendkeys,提示element can't focus--解决方法(成都-半步流雲,群友解决) 成都-半步流雲1.升级你的chromedriver,2.降chrome版本 ...

  3. jquery获取文本框的内容

    使用jquery获取文本框的内容有以下几种: 1.根据ID取值(id属性): // javascript <script type="text/javascript"> ...

  4. jQuery清除文本框,内容并设置不可用

    JQuery清除文本框,内容并设置不可用  如果是设置只读,则将disabled换成readonly function CleanText(textid) { $("#"+text ...

  5. JS事件 文本框内容改变事件(onchange)通过改变文本框的内容来触发onchange事件,同时执行被调用的程序。

    文本框内容改变事件(onchange) 通过改变文本框的内容来触发onchange事件,同时执行被调用的程序. 如下代码,当用户将文本框内的文字改变后,弹出对话框"您改变了文本内容!&quo ...

  6. JQuery+AJAX实现搜索文本框的输入提示功能

    平时使用谷歌搜索的时候发现只要在文本框里输入部分单词或字母,下面马上会弹出一个相关信息的内容框可供选择.感觉这个功能有较好的用户体验,所以也想在自己的网站上加上这种输入提示框. 实现的原理其实很简单, ...

  7. 纯 JS 设置文本框的默认提示

    HTML5 中有个新特性叫 placeholder,一般用它来描述输入字段的预期值,适用于 text.search.password 等类型的 input 以及 textarea.示例如下: < ...

  8. 文本框/域文字提示(placeholder)自动显示隐藏jQuery小插件

    // 文本框文本域提示文字的自动显示与隐藏 (function($){ $.fn.textRemindAuto = function(options){ options = options || {} ...

  9. Selenium向iframe富文本框输入内容

    目录 前言 只输入纯文本 通过JS注入HTML代码 前言 在使用Selenium测试一些CMS后台系统时,有时会遇到一些富文本框,如下图所示: 整个富文本编辑器是通过iframe嵌入到网页中的,手动尝 ...

随机推荐

  1. 表单提交复选框(checkbox)注意事项

    例子: <form action="a.php" method="post"> <input type="checkbox" ...

  2. Android来电监听

    本文实现来电自动接听,自动录音,自动回拨功能. public class MainActivity extends Activity { @Override protected void onCrea ...

  3. 性能测试之LoardRunner 结果分析

    性能结果分析是性能测试中的重中之重,也是难点所在,以下总结了看图的一些顺序: 1.首先可以检查Analysis模块提供的Summary Report,整个测试过程中我们所关心的各业务 2.首先关注性能 ...

  4. WPF的MVVM

    一.关于WPF WPF(Windows  Presentation Foundation) ,从名字来看,Microsoft想把WPF技术作为Windows程序外观(表现层)的基础.我们知道,现在开发 ...

  5. Android自学绝佳资料

    本文转自stormzhang老师的博客:http://stormzhang.com/android/2014/07/07/learn-android-from-rookie 首先感谢stromzhan ...

  6. Complete Guide for Spring Boot Actuator

    You are here to learn about Spring Boot Actuator for collecting metrics about your production grade ...

  7. Js三级联动菜单

    效果演示: <SCRIPT LANGUAGE="JavaScript"> <!-- function CreateSelect(_FormName,_SName, ...

  8. MFC消息映射的原理:笔记

    多态的实现机制有两种,一是通过查找绝对位置表,二是查找名称表:两者各有优缺点,那么为什么mfc的消息映射采用了第二种方法,而不是c++使用的第一种呢?因为在mfc的gui类库是一个庞大的继承体系,而里 ...

  9. 在JAVA中开发应用之html5离线应用

     1.环境搭建(Tomcat为例): 在Tomcat中的conf配置文件中web.xml中添加离线配置: <!--HTML5--> <mime-mapping> <ext ...

  10. Swift - 协议(protocol)

    1,Swift中协议类似于别的语言里的接口,协议里只做方法的声明,包括方法名.返回值.参数等信息,而没有具体的方法实现. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...