Как выполнить автозаполнение в asp.net с помощью ListView?

#javascript #asp.net #ajax #listview #autocomplete

#javascript #asp.net #ajax #listview #автозаполнение

Вопрос:

Я пытаюсь реализовать автозаполнение в asp: TextBox, который находится в asp: ListView. Я написал WebService.asmx, который правильно извлекает значения за пределами ListView.

Я попробовал WebService.asmx, который выполняет автозаполнение должным образом, находясь за пределами ListView. Я попытался воспроизвести то же самое, но на этот раз в asp:ListView, ItemTemplate. Я не получаю никакой ошибки, но я также не получаю никаких параметров автозаполнения. Я перепробовал много способов восстановить TextBox.ClientID, но ничего не работает..

///////////////////////////////////////////////////////////// ВНЕ LISTVIEW (это работает)

 <script>
      var txtSearch = $('#<%= txtUser.ClientID %>');
      txtSearch.autocomplete({
            source: function (request, response) {
                  var param = { searchTerm: txtSearch.val() };
                  $.ajax({
                        url: "WebServices.asmx/GetLogInUsers",
                        data: JSON.stringify(param),
                        type: "POST",
                        dataType: "json",
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                              response(data.d)
                        },
                        error: function (result) {
                              alert(result);
                        }
                  });
            },
            minLength: 3
      });
</script>
<asp:TextBox ID="txtUser" runat="server" class="form-control"></asp:TextBox>
  

/////////////////////////////////////////////////////////////
ДЛЯ LISTVIEW

 <script>
a) var txtSearch = $("*[id$=lvMyGestionnaires] input[id$=txtLvADID]");
b) var txtSearch = $("*[id=lvMyGestionnaires] input[id*=txtLvADID]");
c) var txtSearch = $("*[id=lvMyGestionnaires] input[id=txtLvADID]");
d) var txtSearch = $("*[id*=lvMyGestionnaires] input[id*=txtLvADID]");
e) var txtSearch = $('#<%=lvMyGestionnaires.ClientID %> .txtLvADID');
f) var txtSearch = $('#<%=lvMyGestionnaires.ClientID %> input.txtLvADID');
g) var txtSearch = $('*[id$="lvMyGestionnaires"] input.txtLvADID');
      txtSearch.autocomplete({
            source: function (request, response) {
                  var param = { searchTerm: txtSearch.val() };
                  $.ajax ({
                        url: "WebServices.asmx/GetLogInUsers",
                        data: JSON.stringify(param),
                        type: "POST",
                        dataType: "json",
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                              response(data.d)
                        },
                        error: function (result) {
                              alert(result);
                        }
                  });
            },
            minLength: 3
      });

</script>
<asp:TextBox ID="txtUsers" runat="server" CssClass="txtLvADID"></asp:TextBox>
  

В первой половине результата отображается автозаполнение, где, как только вы вводите по крайней мере 3 буквы, запускается автозаполнение и отображается список пользователей.

Во второй половине я перепробовал множество способов извлечения данных из текстового поля от A до G, вдохновленный тем, что я искал в Интернете.

Комментарии:

1. Находится ли ваш Ajax-код вне Listview? Кроме того, добавьте класс css в textbox, а затем попробуйте использовать этот селектор классов css

2. Ajax находится за пределами ListView, а CSS-класс для этого текстового поля — «txtLvADID»

3. Попробуйте использовать простой селектор классов css, например $('.txtLvADID').autocomplete({..})

4. Это по-прежнему не имеет никакого значения. Есть ли способ протестировать / отладить Javascript / ajax?

5. Вы можете написать debugger; инструкцию в своем коде javascript, а затем обновить браузер, запустить инструменты разработчика, нажав клавишу F12, а затем выполнить действие, которое приведет к приостановке выполнения кода в инструкции debugger, и с этого момента вы сможете выполнять построчную отладку.