AutoComplete Control
ToolKit里面有一个叫做AutoComplete的控件,它能够使用DB里面数据来作为Auto Complete内容,基本上来说要使用他需要做一些设定。
首先,需要创建一个Web Service,在这一个web Service(.asmx)里面有几项要做:
1、Web Service的Class上面要把[System.Web.Script.Services.ScriptService]给启用(去掉注解)
2、加上一个WebMethod:
[WebMethod] public string[] GetMyFilterList(string prefixText, int count) { DataSet ds = new DataSet(); SqlConnection cn = new SqlConnection(); cn.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Northwind.mdf;Integrated Security=True;User Instance=True"; SqlDataAdapter da = new SqlDataAdapter("SELECT 地址 FROM 員工", cn); da.Fill(ds); IList list = new string[ds.Tables[0].Rows.Count]; for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { list[i] = ds.Tables[0].Rows[i]["地址"].ToString(); } List returnlist = new List(list.Count); for (int i = 0; i < list.Count; i++) { if (list[i].Contains(prefixText)) { returnlist.Add(list[i]); } } return returnlist.ToArray(); }
这一个WebMethod将是被用来做Auto Complete搜索所用到。原理也很简单,他其实只是做SQL查询。
如果要做更改只需要改SQL的指令,和DB的链接地址。这个例子使用的是Northwind数据库。
到这里Web Service准备好了。现在到需要到TextBox附加的AutoComple上面。首先,先选取到 Auto Complete的property,里面有几个参数很重要
1、ServicePath:这个将表示Web Service所在的位置,以我们的例子,Web Service和我们的软件在同一个地方,因此只是把Web Service 的.asmx文件文件名字带进去。
2、ServiceMethod:这个表示使用那个Web Method,只要把Method名字带进去即可,不需要加上两个挂号()。
3、MinimumPrefixLen:这表示打了几个字以后才会开始做AutoComplete,预设是3个字。
4、CompletionInterval:延迟多久显示AutoComplete。