توضیحات و دانلود

انتقال پارامتر اضافی به WebMethod برای AJAX AutoCompleteExtender با استفاده از ContextKey در Asp.net
0 0
انتقال پارامتر اضافی به WebMethod برای AJAX AutoCompleteExtender با استفاده از ContextKey در Asp.net

با سلام در اینجا توضیح می دهیم چگونه می توان پارامتر اضافی را به WebService یا WebMethod با استفاده از کنترل جعبه ابزارAJAX AutoCompleteExtender منتقل کرد .
بانک اطلاعاتی
برای این آموزش، از پایگاه داده NorthWind استفاده می کنیم که می توانید با استفاده از لینک زیر دانلود کنید.
دانلود NorthWind پایگاه داده
رشته اتصال
هنگامی که پایگاه داده دانلود می شود می توانید آن را به نمونه SQL Server خود پیوست کنید. از SQL Server 2005 Express استفاده می کنیم از این رو در زیر Connection string است.

<connectionStrings>
<add name="constr"connectionString="Data Source = .\SQLExpress;
Initial Catalog = Northwind; Integrated Security = true"/>
</connectionStrings>

کنترل AJAX Toolkit
 کنترل DLL Toolkit AJAX را با استفاده از لینک زیر دانلود کنید و مرجع پروژه خود را اضافه کنید.
دانلود AJAX Toolkit Control
پس از انجام این کار، آن را در صفحه ASPX ثبت کنید .

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

کد HTML

<asp:DropDownList ID = "ddlCountries" runat = "server">
<asp:ListItem Text = "All Countries" Value = "0"></asp:ListItem>
<asp:ListItem Text = "Argentina" Value = "Argentina"></asp:ListItem>
<asp:ListItem Text = "Austria" Value = "Austria"></asp:ListItem>
<asp:ListItem Text = "Belgium" Value = "Belgium"></asp:ListItem>
<asp:ListItem Text = "Brazil" Value = "Brazil"></asp:ListItem>
<asp:ListItem Text = "Canada" Value = "Canada"></asp:ListItem>
<asp:ListItem Text = "Denmark" Value = "Denmark"></asp:ListItem>
<asp:ListItem Text = "Finland" Value = "Finland"></asp:ListItem>
<asp:ListItem Text = "France" Value = "France"></asp:ListItem>
<asp:ListItem Text = "Germany" Value = "Germany"></asp:ListItem>
<asp:ListItem Text = "Ireland" Value = "Ireland"></asp:ListItem>
<asp:ListItem Text = "Italy" Value = "Italy"></asp:ListItem>
<asp:ListItem Text = "Mexico" Value = "Mexico"></asp:ListItem>
<asp:ListItem Text = "Norway" Value = "Norway"></asp:ListItem>
<asp:ListItem Text = "Poland" Value = "Poland"></asp:ListItem>
<asp:ListItem Text = "Portugal" Value = "Portugal"></asp:ListItem>
<asp:ListItem Text = "Spain" Value = "Spain"></asp:ListItem>
<asp:ListItem Text = "Sweden" Value = "Sweden"></asp:ListItem>
<asp:ListItem Text = "Switzerland" Value = "Switzerland"></asp:ListItem>
<asp:ListItem Text = "UK" Value = "UK"></asp:ListItem>
<asp:ListItem Text = "USA" Value = "USA"></asp:ListItem>
<asp:ListItem Text = "Venezuela" Value = "Venezuela"></asp:ListItem>   
</asp:DropDownList>
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods = "true">
</asp:ScriptManager>
 
<asp:TextBox ID="txtContactsSearch" runat="server" onkeyup = "SetContextKey()"></asp:TextBox>
<cc1:AutoCompleteExtender ServiceMethod="SearchCustomers"
    MinimumPrefixLength="2"
    CompletionInterval="100" EnableCaching="false" CompletionSetCount="10"
    TargetControlID="txtContactsSearch" UseContextKey = "true"
    ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
</cc1:AutoCompleteExtender>

در بالا کنترل های زیر وجود دارد :
 ddlCountries - کنترل DropDownList برای مشخص کردن کشور (پارامتر اضافی) به کنترل Ajax AutoCompleteExtender است .
txtContactsSearch -  که ASP.Net TextBox درAJAX AutoCompleteExtender اعمال می شود
AutoCompleteExtender1 - کنترل ASP.Net AJAX AutoCompleteExtender است .
توجه :

در بالا یک پارامتر اضافی در کنترل AJAX AutoCompleteExtender  است. UseContextKey = "true" . درارسال پارامتر اضافی ContextKey باید این پارامتر به true باشد.
کد Server Side
C #

[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> SearchCustomers(string prefixText, int count, string contextKey)
{
    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString = ConfigurationManager
                .ConnectionStrings["constr"].ConnectionString;
        using (SqlCommand cmd = new SqlCommand())
        {
            string cmdText = "select ContactName from Customers where " +
            "ContactName like @SearchText + '%'";
            cmd.Parameters.AddWithValue("@SearchText", prefixText);
            if (contextKey != "0")
            {
                cmdText += " and Country = @Country";
                cmd.Parameters.AddWithValue("@Country", contextKey);
            }
            cmd.CommandText = cmdText;
            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, ByVal contextKey As String) As List(Of String)
    Dim conn As SqlConnection = New SqlConnection
    conn.ConnectionString = ConfigurationManager _
         .ConnectionStrings("constr").ConnectionString
    Dim cmd As SqlCommand = New SqlCommand
    Dim cmdText As String = "select ContactName from Customers where" & _
        " ContactName like @SearchText + '%'"
    cmd.Parameters.AddWithValue("@SearchText", prefixText)
    If contextKey <> "0" Then
        cmdText = cmdText + " and Country = @Country"
        cmd.Parameters.AddWithValue("@Country", contextKey)
    End If
    cmd.CommandText = cmdText
    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

توضیح:
در بالا contextKey پارامتر اضافی را که حاوی مقدار انتخاب کشور از DropDownList است مشخص کرده است.
 مقدار پارامتر contextKey را بررسی می کنیم و اگر آن "0" نباشد،  ارزش کشور را به درخواست SQL منتقل می کنیم تا فیلتر بر اساس پیشوند UserName و  Country باشد .
اگر مقدار مقادیر contextKey "0" باشد، جستجو تنها بر اساس پارامتر پیشوند UserName انجام می شود.
مقدار ContextKey سمت Client Side را از طریق جاوا اسکریپت تنظیم می شود .

تنظیم مقدار ContextKey
در زیر مقدار ASP.Net AJAX AutoCompleteExtender ContextKey را با استفاده از تابع جاوا اسکریپت تنظیم می کنم.

<script type = "text/javascript">
    function SetContextKey() {
        $find('<%=AutoCompleteExtender1.ClientID%>').set_contextKey($get("<%=ddlCountries.ClientID %>").value);
    }
</script>


عملکرد جاوا اسکریپت فوق در رویداد exchange از کنترل TextBox به صورت زیر نشان داده می شود .

<asp:TextBox ID="txtContactsSearch" runat="server" onkeyup = "SetContextKey()"></asp:TextBox>

عکس روی صفحه

 

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :