.Net文本框实现内容提示的实例代码(仿Google、Baidu)
1.Demo下载:
2.创建数据库、表(我用的sqlserver2008数据库)
CREATETABLECeshi
(
idVARCHAR(50)PRIMARYKEYNOTNULL,
cnameVARCHAR(30)
)
GO
INSERTINTOCeshi
SELECTNEWID(),"jack1"UNION
SELECTNEWID(),"jack2"UNION
SELECTNEWID(),"jack3"UNION
SELECTNEWID(),"jack4"UNION
SELECTNEWID(),"jack5"UNION
SELECTNEWID(),"peter1"UNION
SELECTNEWID(),"peter2"UNION
SELECTNEWID(),"peter3"UNION
SELECTNEWID(),"peter4"UNION
SELECTNEWID(),"peter5"
go
3.创建自定义函数
createfunction[dbo].[f_GetPy](@strnvarchar(4000))
returnsnvarchar(4000)
as
begin
declare@strlenint,@renvarchar(4000)
declare@ttable(chrnchar(1)collateChinese_PRC_CI_AS,letternchar(1))
insertinto@t(chr,letter)
select"吖","A"unionallselect"八","B"unionall
select"嚓","C"unionallselect"?","D"unionall
select"??","E"unionallselect"发","F"unionall
select"旮","G"unionallselect"铪","H"unionall
select"丌","J"unionallselect"咔","K"unionall
select"垃","L"unionallselect"?`","M"unionall
select"??","N"unionallselect"噢","O"unionall
select"?r","P"unionallselect"七","Q"unionall
select"?","R"unionallselect"仨","S"unionall
select"他","T"unionallselect"?","W"unionall
select"夕","X"unionallselect"丫","Y"unionall
select"??","Z"
select@strlen=len(@str),@re=""
while@strlen>0
begin
selecttop1@re=letter+@re,@strlen=@strlen-1
from@tawherechr<=substring(@str,@strlen,1)
orderbychrdesc
if@@rowcount=0
select@re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1
end
return(@re)
end
GO
4.asp.net前台页面(需要添加2个引用:AjaxControlToolkit.dll,AutoCompleteExtra.dll)
<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="TextBoxAuto.aspx.cs"Inherits="WebApplication1.TextBoxAuto"%>
<%@RegisterAssembly="AutoCompleteExtra"Namespace="AutoCompleteExtra"TagPrefix="cc1"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>
<styletype="text/css">
.searchTextBox
{
border:1pxsolid#e1e1e1;
border-collapse:separate;
border-spacing:0;
padding:2px2px2px2px;
white-space:nowrap;
margin-left:2px;
height:28px;
line-height:28px;
margin-right:5px;
font-family:微软雅黑,宋体;
font-size:14px;
}
</style>
</head>
<body>
<formid="form1"runat="server">
<asp:ScriptManagerID="ScriptManager1"runat="server">
</asp:ScriptManager>
<asp:UpdatePanelID="UpdatePanel1"runat="server">
<ContentTemplate>
<div>
<divclass="dd2">
请输入姓名:<asp:TextBoxCssClass="searchTextBox"runat="server"ID="txtCompanyName"Style="width:280px;"></asp:TextBox>
<cc1:AutoCompleteExtraExtenderID="AutoCompleteExtraExtender1"runat="server"ServiceMethod="GetCompanyNameList"
TargetControlID="txtCompanyName"AsyncPostback="false"UseContextKey="True"AutoPostback="false"
MinimumPrefixLength="1"CompletionInterval="10">
</cc1:AutoCompleteExtraExtender>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
5.后台页面
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingOceansoft.Net.Bll;
namespaceWebApplication1
{
publicpartialclassTextBoxAuto:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
[System.Web.Services.WebMethodAttribute(),System.Web.Script.Services.ScriptMethodAttribute()]
publicstaticstring[][]GetCompanyNameList(stringprefixText,intcount,stringcontextKey)
{
//获取自动完成的选项数据
List<string[]>list=newList<string[]>();
List<string>nameList=newList<string>();
List<string>idList=newList<string>();
CeshiManageceshimanage=newCeshiManage();
ceshimanage.GetTopUserName(count,prefixText.ToUpper(),outidList,outnameList);
for(inti=0;i<nameList.Count;i++)
{
string[]Respuesta=newstring[2];
Respuesta[0]=nameList[i];
Respuesta[1]=idList[i];
list.Add(Respuesta);
}
returnlist.ToArray();
}
}
}
6.后台页面用到的方法(管理类)
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Web.UI;
usingOceansoft.Net.Bll;
usingSubSonic;
usingSystem.Transactions;
usingSystem.Data;
usingOceansoft.Net.Dal;
namespaceOceansoft.Net.Bll
{
///<summary>
///:ceshi
///:jibp
///:2014-2-2715:52:15
///</summary>
publicclassCeshiManage
{
privateSqlQuerym_sqlquery=Oceansoft.Net.Dal.DB.Select().From(Ceshi.Schema);
///<summary>
///Ceshi查询器
///</summary>
publicSqlQueryCeshiSelecter
{
get{returnm_sqlquery;}
set{m_sqlquery=value;}
}
///<summary>
///构造函数,设置查询器
///</summary>
publicCeshiManage()
{
m_sqlquery=m_sqlquery.Where("id").IsNotEqualTo("");
}
#regionCeshi管理
///<summary>
///获取ceshi列表
///</summary>
///<returns></returns>
publicList<Ceshi>getCeshiList()
{
returnCeshiSelecter.ExecuteTypedList<Ceshi>();
}
///<summary>
///获取ceshi列表,同时分页操作
///</summary>
///<returns></returns>
publicList<Ceshi>getCeshiList(intcurrentPage,intpageSize,outintRecordCount)
{
RecordCount=m_sqlquery.GetRecordCount();
returnCeshiSelecter
.Paged(currentPage,pageSize)
.ExecuteTypedList<Ceshi>();
}
///<summary>
///新增ceshi
///</summary>
///<paramname="HandleEntity"></param>
///<paramname="sErr"></param>
///<returns></returns>
publicboolAddCeshi(CeshibeAddMode,outstringsErr)
{
sErr="";
boolbRet=true;
try
{
using(TransactionScopesc=newTransactionScope())
{
//此处写代码
//流水编号的生成
//GenerateNoNo=newGenerateNo();
//No.TableName="Ceshi";//表名
//No.NoName="XXX"; //流水号前字母
//No.ColName="CC_Number"; //编号字段
//No.CreateTime="CC_CreateTime"; //日期字段
//stringBillNo="";
//Customer_Comp.CC_Number=No.AutoGenerateNo();
beAddMode.IsNew=true;
beAddMode.Save();
//LogHelper.WriteLog(logType.新增,logModule.Deptrelation,"ceshi新增成功("+beAddMode.GetPrimaryKeyValue().ToString()
//+")!");
//如果生成扩展类请使用add方法方法
sc.Complete();
}
}
catch(Exceptionex)
{
sErr="ceshi新增不成功!";
returnfalse;
}
sErr="ceshi新增成功!";
returnbRet;
}
///<summary>
///修改ceshi
///</summary>
///<paramname="HandleEntity"></param>
///<paramname="sErr"></param>
///<returns></returns>
publicboolUpdataCeshi(CeshibeUpdataMode,outstringsErr)
{
sErr="";
boolbRet=true;
try
{
using(TransactionScopesc=newTransactionScope())
{
//如果生成扩展类请使用Update()方法方法
beUpdataMode.IsNew=false;
beUpdataMode.Save();
//LogHelper.WriteLog(logType.修改,logModule.Deptrelation,"ceshi修改成功("+beUpdataMode.GetPrimaryKeyValue().ToString()
//+")!");
sc.Complete();
}
}
catch(Exceptionex)
{
sErr="ceshi修改不成功!";
returnfalse;
}
sErr="ceshi修改成功!";
returnbRet;
}
///<summary>
///删除ceshi
///</summary>
///<paramname="HandleEntity"></param>
///<paramname="sErr"></param>
///<returns></returns>
publicboolDeleteCeshi(CeshibeDeleteMode,outstringsErr)
{
sErr="";
boolbRet=true;
try
{
using(TransactionScopesc=newTransactionScope())
{
//如果生成扩展类请使用Delete()方法方法
Ceshi.Delete(beDeleteMode.GetPrimaryKeyValue());
//LogHelper.WriteLog(logType.删除,logModule.Deptrelation,"ceshi删除成功("+beDeleteMode.GetPrimaryKeyValue().ToString()
//+")!");
sc.Complete();
}
}
catch(Exceptionex)
{
sErr="ceshi删除不成功!";
returnfalse;
}
sErr="ceshi删除成功!";
returnbRet;
}
///<summary>
///删除ceshi列表
///</summary>
///<paramname="HandleEntity"></param>
///<paramname="sErr"></param>
///<returns></returns>
publicboolDeleteCeshiList(List<Ceshi>lstCeshi,outstringsErr)
{
sErr="";
intii=0;
boolbRet=true;
try
{
using(TransactionScopesc=newTransactionScope())
{
//如果生成扩展类请使用Delete()方法方法
foreach(CeshibedelmodeinlstCeshi)
{
ii++;
Ceshi.Delete(bedelmode.GetPrimaryKeyValue());
//LogHelper.WriteLog(logType.删除,logModule.Deptrelation,"ceshi删除成功("+bedelmode.GetPrimaryKeyValue().ToString()
//+")!");
}
sc.Complete();
}
}
catch(Exceptionex)
{
sErr="ceshi删除不成功!";
returnfalse;
}
sErr="共"+ii.ToString()+"条单据删除成功!";
returnbRet;
}
public voidGetTopUserName(inttopCount,stringname,outList<string>listId,out List<string>listcname)
{
stringsql=string.Format(@"Selectid,cnamefrom(SelectROW_NUMBER()over(orderbycname)asROWNUM,"+
"id,cnameFROM[dbo].[Ceshi]wherecnamelike"%"+name+"%"or dbo.f_GetPy(cname)like"%"+name+"%")astawhereta.ROWNUM<="+topCount);
DataTabledt=newDataTable();
QueryCommandqc=newInlineQuery().GetCommand(sql);
dt=DataService.GetDataSet(qc).Tables[0];//将查询出来的数据集放到List中去(查询数据的方法,有很多,这边我用的是Subsonic类自带的查询方法)
listcname=newList<string>();
listId=newList<string>();
foreach(DataRowrowindt.Rows)
{
listId.Add(row[0].ToString());
listcname.Add(row[1].ToString());
}
}
#endregion
}
}
7.webconfig配置
<!-- <configuration> <addname="DemoTo"type="SubSonic.SqlDataProvider,SubSonic"connectionStringName="DemoTo"generatedNamespace="Oceansoft.Net"maxPoolSize="2000"/> </providers> <system.web> <authenticationmode="Forms"> <membership> <profile> <roleManagerenabled="false"> </system.web> <system.webServer>
<?xmlversion="1.0"?>
有关如何配置ASP.NET应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configSections>
<sectionname="SubSonicService"type="SubSonic.SubSonicSection,SubSonic"requirePermission="false"/>
</configSections>
<connectionStrings>
<addname="DemoTo"connectionString="DataSource=172.17.118.197;InitialCatalog=DemoTo;UserId=sa;Password=password01!;"providerName="System.Data.SqlClient"/>
</connectionStrings>
<SubSonicServicedefaultProvider="DemoTo">
<providers>
</SubSonicService>
<compilationdebug="true"targetFramework="4.0"/>
<formsloginUrl="~/Account/Login.aspx"timeout="2880"/>
</authentication>
<providers>
<clear/>
<addname="AspNetSqlMembershipProvider"type="System.Web.Security.SqlMembershipProvider"connectionStringName="ApplicationServices"
enablePasswordRetrieval="false"enablePasswordReset="true"requiresQuestionAndAnswer="false"requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5"minRequiredPasswordLength="6"minRequiredNonalphanumericCharacters="0"passwordAttemptWindow="10"
applicationName="/"/>
</providers>
</membership>
<providers>
<clear/>
<addname="AspNetSqlProfileProvider"type="System.Web.Profile.SqlProfileProvider"connectionStringName="ApplicationServices"applicationName="/"/>
</providers>
</profile>
<providers>
<clear/>
<addname="AspNetSqlRoleProvider"type="System.Web.Security.SqlRoleProvider"connectionStringName="ApplicationServices"applicationName="/"/>
<addname="AspNetWindowsTokenRoleProvider"type="System.Web.Security.WindowsTokenRoleProvider"applicationName="/"/>
</providers>
</roleManager>
<modulesrunAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>相关文章