Member 7969814 Ответов: 1

Как сделать более быстрый поиск javascript для ASP.NET вид сетки.


Привет,

Я использую этот код javascript для своего представления сетки в asp.net (веб-форма) Для поиска автомобиля нет столбца, код работает медленнее для 2000 записей, как я могу сделать это быстрее, это мой код.

это мой код.
function Search_GridviewVehicleNo(strKey) {
    var strData = strKey.value.toLowerCase().split(" ");
    var tblData = document.getElementById('<%= GridViewVehicle.ClientID %>');
    var rowData;
    for (var i = 1; i < tblData.rows.length; i++) {
        rowData = tblData.rows[i].cells[2].innerText;
        var styleDisplay = 'none';
        for (var j = 0; j < strData.length; j++) {
            if (rowData.toLowerCase().indexOf(strData[j]) >= 0)
                styleDisplay = '';
            else {
                styleDisplay = 'none';
                break;
            }
        }
        tblData.rows[i].style.display = styleDisplay;
    }
}

tblData.rows[i].cells[2].innerText; это колонка номер транспортного средства.

спасибо

Что я уже пробовал:

function Search_GridviewVehicleNo(strKey) {
   var strData = strKey.value.toLowerCase().split(" ");
   var tblData = document.getElementById('<%= GridViewVehicle.ClientID %>');
   var rowData;
   for (var i = 1; i < tblData.rows.length; i++) {
       rowData = tblData.rows[i].cells[2].innerText;
       var styleDisplay = 'none';
       for (var j = 0; j < strData.length; j++) {
           if (rowData.toLowerCase().indexOf(strData[j]) >= 0)
               styleDisplay = '';
           else {
               styleDisplay = 'none';
               break;
           }
       }
       tblData.rows[i].style.display = styleDisplay;
   }
}

Richard MacCutchan

Зачем вам нужно 2000 записей в представлении? Ваши пользователи не будут счастливы, прокручивая эту кучу.

F-ES Sitecore

Я бы реализовал api, который позволяет вам искать данные, а не искать через html. Api будет искать необработанные данные и, вероятно, будет довольно быстрым. Вы можете использовать результаты api для управления имеющейся таблицей или просто создать новую таблицу из результатов.

1 Ответов

Рейтинг:
10

Sandeep Mewara

Ричард & F-ES уже указал лучший способ сделать это. В случае, если вы все еще хотите продолжить текущий подход, я бы предложил вам использовать фильтры jQuery[^]

Пример использования:

<script>
$(document).ready(function(){
  $("#myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myTable tr").filter(function() {
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
  });
});
</script>

Цитата:
Мы используем jQuery для циклического перебора строк каждой таблицы, чтобы проверить, есть ли какие-либо текстовые значения, соответствующие значению поля ввода. Метод toggle() скрывает строку (display:none), которая не соответствует запросу. Мы используем метод toLowerCase() DOM для преобразования текста в нижний регистр, что делает поиск нечувствительным к регистру (позволяет использовать "john", "John" и даже "JOHN" при поиске).


если выше все еще медленно, попробуйте использовать смесь .find &усилитель; .filter, любить:
var allCells = table.find('td');
selectedCells = allCells.filter(....);

Ссылаться: метод jQuery find() [^]