带数据库的自动完成控件扩展





1.00/5 (1投票)
带数据库的自动完成控件扩展
引言
AjaxToolKit 的 autoComplete 控制器扩展,带有数据库交互功能
背景
本文的背景是使用 Web 服务来调用数据库
使用代码
关于如何使用文章或代码的简要说明。类名、方法和属性,任何技巧或窍门。
代码块应设置为“Formatted”样式,如下所示
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AutoComplete.aspx.cs" Inherits="AutoComplete" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %> <html> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <table border="0" cellpadding="0" cellspacing="0" style="width: 80%" align="center"> <tr> <td style="width: 100px"> </td> <td style="width: 100px"> </td> <td style="width: 100px"> </td> </tr> <tr> <td style="width: 100px"> </td> <td style="width: 100px"> <asp:TextBox runat="server" ID="myTextBox" Width="300" autocomplete="off" /> <ajaxToolkit:AutoCompleteExtender runat="server" ID="autoComplete1" TargetControlID="myTextBox" ServicePath="AutoComplete.asmx" ServiceMethod="GetCompletionList" MinimumPrefixLength="1" CompletionInterval="200" EnableCaching="true" CompletionSetCount="12" /> </td> <td style="width: 100px"> </td> </tr> <tr> <td style="width: 100px"> </td> <td style="width: 100px"> </td> <td style="width: 100px"> </td> </tr> </table> </form> </body> </html> <script type="text/javascript"> // Work around browser behavior of "auto-submitting" simple forms var frm = document.getElementById("aspnetForm"); if (frm) { frm.onsubmit = function() { return false; }; } </script> using System; using System.Web; using System.Collections; using System.Collections.Generic; using System.Web.Services; using System.Web.Services.Protocols; using System.Data; using System.Data.SqlClient; using System.Configuration; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.Web.Script.Services.ScriptService] public class AutoComplete : WebService { string connectionString = string.Empty; DataTable dt = null; SqlCommand objCommnad = null; SqlDataAdapter da = null; SqlConnection con = null; public AutoComplete() { } [WebMethod] public string[] GetCompletionList(string prefixText, int count) { if (count == 0) { count = 10; } if (prefixText.Equals("xyz")) { return new string[0]; } Random random = new Random(); List<string> items = new List<string>(count); for (int i = 0; i < count; i++) { char c1 = (char)random.Next(65, 90); char c2 = (char)random.Next(97, 122); char c3 = (char)random.Next(97, 122); items.Add(prefixText + c1 + c2 + c3); } //return items.ToArray(); return getCompany(prefixText); /////////////////Rizwan Code Here \\\\\\\\\\\\\\\\\\\\\\\ } private string[] getCompany(string CompanyNameLike) { connectionString = ConfigurationManager.AppSettings["ConStr1"].ToString(); con = new SqlConnection(connectionString); try { con.Open(); objCommnad = new SqlCommand(); objCommnad.Connection = con; objCommnad.CommandType = CommandType.StoredProcedure; objCommnad.CommandText = "LU_Select_ProPerty"; objCommnad.Parameters.Add("@CompanyName", SqlDbType.VarChar).Value = CompanyNameLike; da = new SqlDataAdapter(objCommnad); dt = new DataTable(); da.Fill(dt); //return dt; } catch (Exception ex) { con.Close(); throw ex; } finally { con.Close(); } List<string> items = new List<string>(dt.Rows.Count); for (int i = 0; i < dt.Rows.Count; i++) { items.Add(dt.Rows[i]["pro_name"].ToString()); } return items.ToArray() ; } }
请记得使用语言下拉菜单设置代码片段的语言。
使用“var”按钮将变量或类名包裹在<code>标签中,例如this
。
关注点
在编写代码的过程中,你学到了什么有趣/好玩/令人恼火的东西吗? 你做了什么特别巧妙、疯狂或异想天开的事情吗?
历史
在此处保持您所做的任何更改或改进的实时更新。