یک مثال از AJAX AutoCompleteExtender در ASP.Net
با سلام در اینجا توضیح می دهیم ، چگونه می توان از کنترل AJAX AutoCompleteExtender به طور مستقیم با صفحه وب ASP.Net و بدون استفاده از خدمات وب استفاده کرد
بانک اطلاعات
برای این آموزش از پایگاه داده NorthWind استفاده می کنیم که می توانید با استفاده از لینک زیر دانلود کنید.
پایگاه داده Northwind را بارگیری کنید
رشته اتصال
پس از دانلود پایگاه داده ، می توانید آن را به SQL Server Instance خود وصل کنید. در اینجا از SQL Server 2005 Express استفاده شده است از این رو رشته اتصال ما است.
<connectionStrings>
<addname="constr"connectionString="Data Source = .\SQLExpress;
Initial Catalog = Northwind; Integrated Security = true"/>
</connectionStrings>
کنترل جعبه ابزار AJAX
با استفاده از لینک زیر ، راهنمای ابزار AJAX Control DLL را دانلود کرده و به پروژه خود مراجعه کنید.
دانلود AJAX Control Tookit
پس از اتمام کار ، آن را در صفحه ASPX مطابق شکل زیر ثبت کنید
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
کد HTML
در زیر کد HTML صفحه وب ASP.Net است
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods = "true">
</asp:ScriptManager>
<asp:TextBox ID="txtContactsSearch" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ServiceMethod="SearchCustomers"
MinimumPrefixLength="2"
CompletionInterval="100" EnableCaching="false" CompletionSetCount="10"
TargetControlID="txtContactsSearch"
ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
</cc1:AutoCompleteExtender>
همانطور که در بالا مشاهده کردید ، یک ScriptManager ، یک TextBox را که به عنوان AutoComplete و کنترل جعبه ابزار AJAX AutoCompleteExtender عمل خواهد کرد ، قرار داده ایم. همچنین با استفاده از ویژگی ServiceMethod روش SearchCustomers را فراخوانی می کنیم
روشهای Server Side
روش زیر برای جمع آوری لیست کامل مشتریان استفاده می شود
C #
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> SearchCustomers(string prefixText, int count)
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager
.ConnectionStrings["constr"].ConnectionString;
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "select ContactName from Customers where " +
"ContactName like @SearchText + '%'";
cmd.Parameters.AddWithValue("@SearchText", prefixText);
cmd.Connection = conn;
conn.Open();
List<string> customers = new List<string>();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
customers.Add(sdr["ContactName"].ToString());
}
}
conn.Close();
return customers;
}
}
}
VB.Net
<System.Web.Script.Services.ScriptMethod(), _
System.Web.Services.WebMethod()> _
Public Shared Function SearchCustomers(ByVal prefixText As String, ByVal count As Integer) As List(Of String)
Dim conn As SqlConnection = New SqlConnection
conn.ConnectionString = ConfigurationManager _
.ConnectionStrings("constr").ConnectionString
Dim cmd As SqlCommand = New SqlCommand
cmd.CommandText = "select ContactName from Customers where" & _
" ContactName like @SearchText + '%'"
cmd.Parameters.AddWithValue("@SearchText", prefixText)
cmd.Connection = conn
conn.Open()
Dim customers As List(Of String) = New List(Of String)
Dim sdr As SqlDataReader = cmd.ExecuteReader
While sdr.Read
customers.Add(sdr("ContactName").ToString)
End While
conn.Close()
Return customers
End Function
روش فوق به سادگی جدول مشتریان را جستجو می کند و لیستی از نامهای مشتری را که مطابق با متن پیشوند است ، برمی گرداند.
توجه: بسیار مهم است که روش را همانند آنچه در بالا ذکر شد حفظ کنید. روش باید دارای دو پارامتر می باشد :
1. پیشوندText (رشته)
2. شمارش (int)
در غیر این صورت این روش با AutoCompleteExtender کار نخواهد کرد.