haiderjaafer Ответов: 3

Элемент управления выпадающим списком с возможностью поиска


привет всем форумчанам

я работаю над sql server 2008 и visual studio 2010 asp.net с#

у меня есть вопрос как сделать выпадающий список доступным для поиска
и если я наберу букву А, то она должна принести все предметы, которые начинаются с буквы А...как самовнушение

любая помощь будет оценена по достоинству

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

я искал в гугле но не нашел того что искал

3 Ответов

Рейтинг:
25

haiderjaafer

спасибо за ваш ответ Рамеш Кумар Барик

это полезно, но когда я набираю букву А, она должна приносить только все предметы, которые начинаются с буквы А... теперь ее приносят предметы, содержащие букву А любое решение для этого

Ramesh Kumar Barik

Да, это из-за запроса, который вы написали в sql для получения списка.
Если вы хотите, чтобы результат приходил на первую букву, то используйте % после входного параметра в операторе like.

Пример: выберите * из dbo.TableName где ColumnName как "A%".

haiderjaafer

привет Рамеш Кумар Барик спасибо

в этом случае я не использую параметры ...
я установил dropdownlist для выбора поля базы данных
Выберите * из Org_Table

Рейтинг:
2

Atlapure Ambrish

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

это код, который вам нужен в вашем файле. aspx

<script type="text/javascript">
    function RefreshUpdatePanel() {
        __doPostBack('txtSearch', '');
    };
</script>


<asp:TextBox ID="txtSearch" runat="server" onkeyup="RefreshUpdatePanel();" AutoPostBack="false" OnTextChanged="txtSearch_TextChanged" ></asp:TextBox>
    <asp:UpdatePanel ID="Update" runat="server">
        <ContentTemplate>
            <asp:DropDownList runat="server" ID="ddlSearch" />
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="txtSearch" />
        </Triggers>
    </asp:UpdatePanel>

    <asp:TextBox ID="txt2" runat="server"></asp:TextBox>


Ниже приведен код, необходимый в вашем коде позади.

public List<string> Values { get; set; }
        private void GetValues()
        {

            Values = new List<string>();

            Values.Add("Apple");
            Values.Add("Orange");
            Values.Add("Banana");
            Values.Add("Pear");
            Values.Add("Black Berry");
            Values.Add("Pineapple");
        }

        protected void txtSearch_TextChanged(object sender, EventArgs e)
        {
            var dropDownList = sender as TextBox;
            var options = (from o in Values
                           where o.StartsWith(dropDownList.Text, StringComparison.InvariantCultureIgnoreCase)
                           select o).ToList();

            ddlSearch.DataSource = options;
            ddlSearch.DataBind();
        }


Этот подход обновляет содержимое панели onkeyup события текстового поля, если вам это нужно на другом событии, например onblur, вы можете зарегистрировать его из кода позади с помощью "RegisterClientScriptBlock".

Я бы все же рекомендовал вам перейти на jQuery auto complete, потому что это более чистый подход.


Рейтинг:
0

Karthik_Mahalingam

проверить это плагин-select2[^]