自动完成也不是什么新技术了,在一些较好的网站上都能看到其应用,下面就把代码贴出来(仅限跟我同一级别的菜鸟观看……老鸟请路过……)
需要一个WebService 我也懒得改名子,就直接叫WebService.asmx; 为什么要用WebService? 其实我也不太清楚,只知道AutoCompleteExtender需要三个最为关键的属性:
- ServicePath="WebService.asmx"
- ServiceMethod="GetWordList"
- TargetControlID="txtText"
如果知道这三个属性的话,也许就清楚为什么要用WebService了,ServicePath:就是WebService的路径,ServiceMethod:WebService中的方法名称,TargetControlID就是要对哪个控件实现自动完成效果(说的有点不清楚,但明白是什么意思就行了);
代码如下:
![](https://yqfile.alicdn.com/img_1c53668bcee393edac0d7b3b3daff1ae.gif?x-oss-process=image/resize,w_1400/format,webp)
![img_405b18b4b6584ae338e0f6ecaf736533.gif](https://yqfile.alicdn.com/img_405b18b4b6584ae338e0f6ecaf736533.gif?x-oss-process=image/resize,w_1400/format,webp)
using System.Web.Services;
using System.Data;
using System.Data.SqlClient;
using CommonUtility;
namespace GridView入库单管理
{
/// <summary>
/// WebService 的摘要说明
/// </summary>
[WebService(Namespace = " http://tempuri.org/ " )]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem( false )]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{
[WebMethod]
public String[] GetWordList( string prefixText, int count)
{
string sql = string .Format( " select top {0} * from InBill where saleName like '% " + @prefixText + " %' " , @count);
SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter( " @prefixText " ,prefixText),
new SqlParameter( " @count " ,count)
};
DataTable table = SQLHelper.GetDateSet(sql, CommandType.Text, paras);
string [] arr = new string [table.Rows.Count];
if (table != null )
{
for ( int i = 0 ; i < table.Rows.Count; i ++ )
{
arr[i] = table.Rows[i][ " saleName " ].ToString();
}
}
return arr;
}
}
}
SQL语句:在声名方法的时候,Count就是为了这个时候用的,AutoCompleteExtender 中加上CompletionSetCount="5" 的时候, 就有用了,它是什么意思? 他就是自动完成的时候,显示多少条数据用的,如果不写,默认是10;也就是说,下拉列表中会出现10条数据;如果定义完以后,在这里就可以将Count传进去了;
string sql = string.Format("select top {0} * from InBill where saleName like '%" + @prefixText + "%'", @count);
string[] arr = new string[table.Rows.Count]; //定义一个字符串类型的数组,让他的长度等于我们查出来的table的行数;紧接着就要遍历table,把每行的数据都填充到数组中去;
arr[i] = table.Rows[i]["saleName"].ToString(); saleName是数据库中的字段名,你这里绑定的是哪个字段,自动完成的时候就会显示哪个字段的值;
Aspx页面代码片段:
< asp:AutoCompleteExtender ID = " AutoCompleteExtender1 " runat = " server " MinimumPrefixLength = " 1 "
CompletionInterval = " 500 " EnableCaching = " false " ServiceMethod = " GetWordList " ServicePath = " WebService.asmx "
TargetControlID = " txtText " CompletionSetCount = " 5 " />
< asp:TextBox ID = " txtText " runat = " server " ></ asp:TextBox >
首先需要一个ScriptManager,这个是必须的,下面解释一下AutoCompleteExtender中各个属性的意思;
MinimumPrefixLength : 就是最小输入几个字符的时候弹出自动完成;
CompletionInterval:自动完成时间间隔;
EnableCaching:是否启用缓存;
ServiceMethod:WebService中的方法名称;
ServicePath:WebService路径;
TargetControlID:绑定的控件;
CompletionSetCount:显示自动完成的行数;
OK了,就这些代码,其实很简单,大家一起加油~ 收工~~ 晚安~
-- |