زمینه
بسیاری از مواقع زمانی که در حال جستجوی متن خاصی از رکوردهای بزرگ هستیم، نیاز به متن پیشنهادی وجود دارد، بنابراین میتوانیم با استفاده از توسعهدهنده خودکار ابزار کنترل Ajax به این نوع نیاز دست پیدا کنیم. بنابراین اجازه دهید این الزام را گام به گام اجرا کنیم
توسعه دهنده تکمیل خودکار چیست؟
AutoComplete یک توسعه دهنده ASP.NET AJAX است که می تواند به هر کنترل TextBox متصل شود و آن کنترل را با یک پانل بازشو مرتبط می کند تا کلماتی را که با پیشوند تایپ شده در جعبه متن شروع می شوند، نمایش دهد. فهرست کشویی حاوی کلمات نامزد ارائه شده توسط وب سرویس در پایین سمت چپ کادر متن قرار دارد.
مرحله 1: جدول را با استفاده از اسکریپت داده شده ایجاد کنید
- CREATE TABLE [dbo].[Countries](
- [CountryId] [int] IDENTITY(1,1) NOT NULL,
- [CountryName] [varchar](50) NULL,
- CONSTRAINT [PK_Countries] PRIMARY KEY CLUSTERED
- (
- [CountryId] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
چند رکورد را در جدولی مانند زیر وارد کنید:
![](https://www.c-sharpcorner.com/UploadFile/0c1bb2/autocomplete-extender-using-Asp-Net/Images/table.jpg)
مرحله 2: ایجاد برنامه وب به صورت:
- "شروع" - "همه برنامه ها" - "Microsoft Visual Studio 2010".
- "فایل" - "وب سایت جدید" - "سی شارپ" - "وب سایت خالی" (برای جلوگیری از افزودن صفحه اصلی).
- برای وب سایت نامی مانند «تکمیل خودکار» یا نام دیگری به دلخواه خود قرار دهید و مکان را مشخص کنید.
- سپس روی Solution Explorer - "Add New Item" - Add Web Form راست کلیک کنید.
- یک TextBox را در قسمت <form> صفحه Default.aspx بکشید و رها کنید.
- AutoCompleteExtender را از جعبه ابزار اضافه کنید
- اکنون کد منبع صفحه default.aspx به شکل زیر خواهد بود.
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
- <!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>
- </head>
- <body style="background-color: #0000FF">
- <form id="form1" runat="server">
- <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods = "true">
- </asp:ScriptManager>
- <table style="margin-top:40px;color:White">
- <tr>
- <td>
- Search County
- </td>
- <td>
- <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
- <asp:AutoCompleteExtender ServiceMethod="GetCompletionList" MinimumPrefixLength="1"
- CompletionInterval="10" EnableCaching="false" CompletionSetCount="1" TargetControlID="TextBox1"
- ID="AutoCompleteExtender1" runat="server" FirstRowSelected="false">
- </asp:AutoCompleteExtender>
- </td>
- </tr>
- </table>
- </form>
- </body>
- </html>
مرحله 3: رشته اتصال را در فایل Web.config به صورت زیر تعریف کنید:
- <connectionStrings>
- <add name ="Conn" connectionString ="Data Source=VITHAL;Initial Catalog=C#corner;User Id=sa;word=swift"/>
- </connectionStrings>
توجه: لطفاً مطابق با مکان سرور خود، در رشته اتصال بالا تغییراتی ایجاد کنید.
مرحله 4: روش را در صفحه default.aspx.cs بنویسید تا رکوردها از پایگاه داده به صورت زیر متصل شوند:
- [System.Web.Script.Services.ScriptMethod()]
- [System.Web.Services.WebMethod]
- public static List<string> GetCompletionList(string prefixText, int count)
- {
- using (SqlConnection con = new SqlConnection())
- {
- con.ConnectionString = ConfigurationManager.ConnectionStrings["Conn"].ConnectionString;
- using (SqlCommand com = new SqlCommand())
- {
- com.CommandText = "select CountryName from Countries where " + "CountryName like @Search + '%'";
- com.Parameters.AddWithValue("@Search", prefixText);
- com.Connection = con;
- con.Open();
- List<string> countryNames = new List<string>();
- using (SqlDataReader sdr = com.ExecuteReader())
- {
- while (sdr.Read())
- {
- countryNames.Add(sdr["CountryName"].ToString());
- }
- }
- con.Close();
- return countryNames;
- }
- }
- }