Как я могу заполнить и оптимизировать DropDownList из WebService, используя Select2. js - PullRequest
0 голосов
/ 04 февраля 2020

Я работаю над модулем выбора клиента , который будет autocomplete при наборе текста. Кажется, что Select2.js сделает эту работу, мне уже удалось заполнить мой dropdownlist, но на серверной части (файл .cs) простой привязкой данных.

Проблема в том, что я работаю только с выборочными данными 15 клиентов, поэтому производительность просто отличная, я ожидаю фактических данных почти 2000 клиентов, поэтому просто связывание может испортить производительность.

Вот мой код для события привязки и реализации файла select2.js

.aspx:

<asp:DropDownList runat="server" ID="ddlCustomers" CssClass="form-control" async="">
   <asp:ListItem></asp:ListItem>
</asp:DropDownList>

.cs file:

protected void BindDropDownCustomers()
{
    DataTable dt = SharedClass.getAPI("CustomerProfile_All"); //Returns Data from Webservice
    DataColumn newColumn = new DataColumn();

    //just formating the display
    newColumn.ColumnName = "FullName";
    newColumn.DataType = System.Type.GetType("System.String");
    newColumn.Expression = "Cust_Last_Name+', '+Cust_First_Name";
    dt.Columns.Add(newColumn);
    ddlCustomers.DataTextField = "FullName";
    ddlCustomers.DataValueField = "SmartCardID";
    ddlCustomers.DataSource = dt.DefaultView;
    ddlCustomers.DataBind();
    ddlCustomers.Items.Insert(0, new ListItem("Select Customer", ""));
}

select2.js script:

$('#<%= ddlCustomers.ClientID %>').select2({
   placeholder: "Select customer",
   minimumResultsForSearch: 2,
   minimumInputLength: 3,
   allowClear: true
});

Я хочу что-то вроде, когда пользователь вводит минимум 3 символа, запрос будет выполнен и получит все связанные данные, которые будут заполнять dropdownlist и одновременно ограничивать или оптимизировать отображение.

1 Ответ

0 голосов
/ 04 февраля 2020

Ну, на мой взгляд, запуск al oop 2000 раз на клиентском компьютере с использованием javascript (было бы лучше проверить, было ли число символов, набранное пользователем, здесь больше 3) хорошо, вместо того, чтобы звонить на сервер и открывать SQL Connection для запроса чего-либо, когда пользователь что-то набирает. Представьте себе, что когда сеть будет работать медленно, задержка будет больше, и что если десятки тысяч пользователей сделают один и тот же вызов серверу, а сервер просто просматривает записи? Ну, это было только мнение. Конечно, вы можете решить, что подходит для вас.

Если вы все еще хотите это сделать, вы можете либо найти некоторые платные элементы управления, либо посмотреть, есть ли такой в ​​ajax инструментарии. Более того, если вы хотите сделать это по-своему, тогда вы можете использовать jquery-ui autocomplete для выполнения задачи.

Я не собираюсь давать исходный код, чтобы сделать это, но вот грубая идея, что вы может потребоваться:

  1. Показать основные c несколько записей при загрузке
  2. Подключить jQuery-UI autocomplete к текстовому полю, которое ищет и возвращает результаты из базы данных
  3. Добавить пользовательский HTML, когда вы получите ответ, который есть на вашей странице HTML, и подключите события jquery/javascript, чтобы выбрать соответствующие значения.

Надеюсь, что это даст грубая идея.

...