Реализация доступного для редактирования DropDownList в ASP.NET

В чем самый изящный способ реализовать DropDownList ASP.NET это доступно для редактирования, не используя сторонние компоненты.

Как последнее прибежище я, вероятно, попытаюсь использовать a TextBox с AutoCompleteExtender с изображением к 'выпадающему' список; или a TextBox наложение Выбора HTML с помощью некоторого JavaScript для заполнения значений от Выбора до TextBox. Но я действительно надеюсь, что существует более краткое и удобное в сопровождении решение.

Заранее спасибо.

6
задан Priyanga 18 October 2019 в 04:57
поделиться

1 ответ

Один элемент управления на странице

Вы можете выполнить этот простой пример для редактируемого DropDownlist в проекте кода , который использует стандартные элементы управления ASP.NET TextBox и DropDownList в сочетании с некоторым JavaScript.

Однако код не работал у меня, пока я не добавил ссылку, чтобы получить значения ClientID для TextBox и DropDownList:

<script language="javascript" type="text/javascript">

function DisplayText()
{
    var textboxId = '<% = txtDisplay.ClientID %>';
    var comboBoxId = '<% = ddSelect.ClientID %>';
    document.getElementById(textboxId).value = document.getElementById(comboBoxId).value;
    document.getElementById(textboxId).focus();
}
</script>    

<asp:TextBox style="width:120px;position:absolute" ID="txtDisplay" runat="server"></asp:TextBox>

<asp:DropDownList ID="ddSelect" style="width:140px" runat="server">    
    <asp:ListItem Value="test1" >test1</asp:ListItem>    
    <asp:ListItem Value="test2">test2</asp:ListItem>    
</asp:DropDownList>

Наконец, в коде позади, как и в исходном примере, я добавил следующее для загрузки страницы:

protected void Page_Load(object sender, EventArgs e)
{
    ddSelect.Attributes.Add("onChange", "DisplayText();");
}


Несколько элементов управления на странице

Я поместил весь вышеуказанный код в отдельный ASCX Пользовательский контроль, чтобы сделать его многоразовым в моем проекте. Однако представленный выше код работает только в том случае, если вам требуется только один редактируемый DropDownList на данной странице.

Если вам нужно поддерживать несколько настраиваемых элементов управления DropDownList на одной странице, необходимо установить уникальное имя функции JavaScript, чтобы избежать конфликтов. Сделайте это, еще раз используя ClientID:

в файле ASCX:

function DisplayText_<% = ClientID %>(){...}

в коде позади:

/// ...
ddSelect.Attributes.Add("onChange", "DisplayText_" + ClientID + "();");
///..

Это один из способов избежать использования сторонних элементов управления.

5
ответ дан 17 December 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: