Использовать автозаполнение для извлечения данных из базы данных в ASP.NET Web Forms с помощью c #? - PullRequest
1 голос
/ 01 сентября 2011

Я изменяю существующее приложение, разработанное другим программистом, используя веб-формы ASP.NET и C #.

Я должен добавить к простому TextBox автозаполнение функциональность.Когда пользователь начинает вводить что-то в TextBox , TextBox должен отображать предложения, основанные на данных, хранящихся в базе данных.Предложения должны основываться только на префиксе (начальная часть уже введенных слов).

Я нашел много примеров, основанных на автозаполнении AJAX extender но он основан на извлечении данных из веб-службы.Каковы шаги и необходимые методы и операции для выполнения этой задачи?

Ответы [ 3 ]

2 голосов
/ 01 сентября 2011

Ссылка, которую вы разместили, в значительной степени объясняет все, что нужно сделать. Следуйте этому видео .

Если вам нужно передать некоторые дополнительные параметры, проверьте этот пример.

Steps.

1.Добавить Textbox и Ajax Extender на страницу и указать целевой идентификатор как textboxid. Указать имя веб-службы для расширителя
2. Внедрите веб-сервис, как указано выше, и протестируйте его в браузере.
3. В веб-сервисе напишите, как вы хотите получать данные. Вы будете возвращать строку [].

Вместо создания веб-сервиса вы даже можете использовать атрибут webmethod для обычной проверки метода после

http://www.ajaxtutorials.com/ajax-tutorials/using-autocomplete-in-the-ajax-toolkit/
http://allwrong.wordpress.com/2007/03/13/ms-ajax-autocomplete-extender-using-a-page-method/

1 голос
/ 01 сентября 2011

Вы можете просто определить метод на странице кода, украсить его атрибутом [WebMethod] и затем установить его в свойстве ServiceMethod раскрывающийся расширитель.
Метод должен реализовывать логику для извлечения / фильтрации результатов, и его подпись должна соответствовать примерам (например, общедоступная строка [] MyMethod (строка prefixText, int count)).

0 голосов
/ 02 июня 2014

Необходимым условием является наличие «AjaxControlToolKit».

Сначала нам нужно поместить текстовое поле в панель обновления, чтобы частичная обратная передача могла произойти, тем самым исключая перезагрузку всей страницы.Используйте ajax autocompleteExtender, с помощью которого мы можем вызвать сервисный метод, имеющий вызов БД, который будет извлекать данные и заполнять текстовое поле.

       <asp:UpdatePanel ID="pnlAcct" runat="server">
  <ContentTemplate>
  <asp:TextBox ID="txtAcctNum"></asp:TextBox>
  <asp:AutoCompleteExtender ID="AutoCompleteExtenderAccount" runat="server" MinimumPrefixLength="1" ServiceMethod="GetSourceAccount" ServicePath="~/AutoComplete/AutoComplete.asmx"
                                    TargetControlID="txtAcctNum" Enabled="True" CompletionSetCount="20" CompletionInterval="1000"
                                    EnableCaching="true">
                                </asp:AutoCompleteExtender>
                            </ContentTemplate>
                            <Triggers>
                                <asp:AsyncPostBackTrigger ControlID="txtAcctNum" />
                            </Triggers>
                        </asp:UpdatePanel>

Вызов службы можно выполнить, добавив WebService (файл .asmx) и записав приведенный ниже код в файл .asmx.cs. Все доступные в строке данные будут отображаться под текстовым полем.

    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod]
     public string[] GetSourceAccount(string prefixText, int count)
     {
  List<string> lstSimilarSource = new List<string>();
  //Service call and populating the string
  lstSimilarSource = Autocomplete.GetSimilarSource(prefixText, "ACCOUNT");
   return lstSimilarSource.ToArray();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...