Monday, November 14, 2022

ASP.NET Ajax autocomplete extender

aspx page


  <div class="dropdown col-md-2">

            <asp:TextBox runat="server" ID="txtSearchByName" CssClass="col-md-12 form-control input-sm"></asp:TextBox>

            <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtSearchByName"

                CompletionSetCount="10" CompletionInterval="100" MinimumPrefixLength="3" ServiceMethod="getData">

            </ajaxToolkit:AutoCompleteExtender>

        </div>





aspx.cs page


 [System.Web.Script.Services.ScriptMethod()]

        [System.Web.Services.WebMethod]

        public static List<string> getData(string prefixText, int count)

        {

            return getAdvanceSearchAutocompleteData(prefixText, count);

        }

        public static List<string> getAdvanceSearchAutocompleteData(string prefixText, int count)

        {

            List<string> Name = new List<string>();

            SqlParameter[] param = { new SqlParameter("prefix", prefixText) };


            DataTable dt = new DataAccess().Read("autosuggest_name", param).Tables[0];

            foreach (DataRow dr in dt.Rows)

            {

                Name.Add(dr["Name"].ToString());

            }

            return Name;

        }



from database aspx page

<asp:TextBox ID="txtSenderName" runat="server" class="uk-width-1-2 form-control" MaxLength="99" AutoPostBack="true" OnTextChanged="txtSenderName_TextChanged"></asp:TextBox>

                                    <asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"

                                        ServiceMethod="AutoComplete_InwardSender"

                                        ServicePath="AutoComplete.asmx"

                                        MinimumPrefixLength="3"

                                        CompletionInterval="100"

                                        EnableCaching="false"

                                        CompletionSetCount="10"

                                        TargetControlID="txtSenderName"

                                        FirstRowSelected="false">

                                    </asp:AutoCompleteExtender>

aspx.cs


  public class AutoComplete : System.Web.Services.WebService

    {

        /// <summary>

        /// Automatics the complete inward sender.

        /// </summary>

        /// <param name="prefixText">The prefix text.</param>

        /// <param name="count">The count.</param>

        /// <returns>System.String[].</returns>

        [WebMethod]

        public string[] AutoComplete_InwardSender(string prefixText, int count)

        {

            List<string> ajaxDataCollection = new List<string>();

            DataTable _objdt = new DataTable();

            _objdt = GetData_InwardSender(prefixText);

            if (_objdt.Rows.Count > 0)

            {

                for (int i = 0; i < _objdt.Rows.Count; i++)

                {

                    ajaxDataCollection.Add(_objdt.Rows[i]["SenderName"].ToString());

                }

            }

            return ajaxDataCollection.ToArray();

        }


public DataTable GetData_InwardSender(string prefixText)

        {

            DataTable dt = new DataTable();


            InwardInformationDTO inwardInformationDto = new InwardInformationDTO();

            using (var client = ServiceClient<IInwardInformationManager>.Create(ObjectConstants.InwardInformationManager))

            {

                inwardInformationDto.InwardInformationList = client.Instance.GetAllInwardInformationSenderNames(prefixText);

            }

            dt = ToDataTable(inwardInformationDto.InwardInformationList);


            return dt;

        }


SQL


ALTER PROCEDURE [dbo].[SSP_GetAllInwardInformationSenderNames]

(

@SenderName nvarchar(99)

)

AS

BEGIN

SELECT CAST((

SELECT Distinct

[SenderName]

FROM [dbo].[InwardInformation]

Where SenderName like @SenderName+'%'

FOR XML RAW('InwardInformationList'),ELEMENTS,ROOT('InwardInformation')) AS XML)

END



No comments:

Post a Comment