Проблема ширины списка элементов в раскрывающемся списке ASP.NET в Internet Explorer - PullRequest
2 голосов
/ 04 февраля 2011

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

Я уже пробовал несколько способов, но безрезультатно, см. http://forums.asp.net/t/1648469.aspx

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

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

Ответы [ 3 ]

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

В троллинге в интернете я обнаружил, что многие задали ваш вопрос и получили все те же ответы, что и вы. В конце концов они приняли холодную суровую правду, как и вам скоро.

В IE раздел параметров (раскрывающийся список) раскрывающегося списка имеет тот же размер, что и, из-за отсутствия более точных условий, выбранной части (раскрывающийся список). Вам нужно будет либо изменить размер всего элемента управления, , как указано в этом сообщении , либо создать собственный элемент управления HTML. Я определенно буду первым, кто признает это, если я ошибаюсь (наряду со многими другими, которые предоставили такое же решение), но надежда кажется слабой.

Пользовательский контроль не будет слишком сложным. Вдобавок ко мне, возможно, это «селектор» div и скрытый ol, некоторые обработчики событий mouseover / mouseout и повторитель ASP.NET для заполнения элементов списка. Я не буду вдаваться в детали реализации этого пользовательского элемента управления, потому что есть много способов сделать это. Как заявил Джош, Telerik и ComponentOne уже внедрили такой элемент управления, но, конечно, за определенную цену. Если хотите, я бы хотел собрать для вас код.

0 голосов
/ 01 апреля 2011

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

<style>
.ctrDropDown{
    width:205px;
    font-size:11px;
}
.ctrDropDownClick{
    font-size:11px;
    width:250px;

}
.plainDropDown{
    width:205px;
    font-size:11px;
}
</style>
<div style= "width:205px; overflow:hidden;">
select id="Dropdownlist" class="ctrDropDown"  onblur="this.className='ctrDropDown';" onmousedown="this.className='ctrDropDownClick';" onchange="this.className='ctrDropDown';" >
0 голосов
/ 04 февраля 2011

Невозможно получить точное поведение, которое вы описываете, из стандартного элемента управления DDL. Лучше всего было бы поместить на страницу пустой DDL со списком, скрытым непосредственно под ним. С помощью JavaScript заставьте список появляться и исчезать на экране. Вы получите выбор, и ширина DDL не изменится, но ширина списка может быть динамической.

Лучшим вариантом будет использование стороннего набора элементов управления, такого как Telerik или ComponentOne, который уже имеет эти функции в своем наборе элементов управления. Приведенное выше предложение предполагает, что вы должны использовать встроенные элементы управления.

...