原文:.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. Android手机怎样录制屏幕及转GIF

    有时候我们须要录制Android 手机的屏幕,比方写了一个Demo应用,须要公布到博客和微博上. 例如以下是我录制转GIF的效果图 对于Android4.4的上的手机,系统自带了一个命令screenr ...

  2. 奇葩的UI引用LayoutInflater.from问题

    今收到BUG一枚,一个页面的EditText的风格变为了系统默认(系统经过定制,风格和普通的不同) 经检查xml无任何不妥,最终问题出在LayoutInflater.from上. 如果LayoutIn ...

  3. mysql 创建函数

    <pre name="code" class="html">root 用户创建函数: delimiter $$ CREATE FUNCTION `l ...

  4. Oracle安装配置流程

    Oracle安装流程 第一次自己动手安装oracle,之前对oracle安装配置一窍不通,最后最终弄好.总结下. 1.  安装oracle10gserver端 2.  安装oracle10gclien ...

  5. POJ 1330 Nearest Common Ancestors(Tarjan离线LCA)

    Description A rooted tree is a well-known data structure in computer science and engineering. An exa ...

  6. Net 并行知识学习

    园子里有很多介绍并行库TPL的这里列举2个 1 并行之Task讲解:http://www.cnblogs.com/yanyangtian/archive/2010/05/21/1741193.html ...

  7. 苹果手表的真实触感信息(Real Touch Messaging)

    苹果手表凭借其炫酷的设计和界面,无疑已成为一个新的科技焦点,也是苹果在可穿戴领域的重头戏. Apple Watch 有一个非常吸引人的特性:Real Touch Messaging,也就是真实触感消息 ...

  8. linux运维常用命令集

    1.删除0字节文件 find -type f -size 0 -exec rm -rf {} \;   2.查看进程 按内存从大到小排列 PS -e   -o "%C   : %p : %z ...

  9. 经典的C++库【转帖】

    源地址:http://www.deuxmille.org/archives/1472 基础类1. Dinkumware C++ Library 参考站点:http://www.dinkumware.c ...

  10. 【IOS实例小计】图像移动--可扩展为动态实现图标变化

    预备知识: 1.页面切换: 从一个ViewController切换到另一个ViewController有下面几种方法: (1)self.view addSubview:(加载的新页面);      相 ...