Один элемент управления на странице
Вы можете следовать этому простому примеру для редактируемого списка DropDown в Project Code , который использует стандартные элементы управления 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 + "();");
///..
Это один из способов избежать использования сторонних элементов управления.