Метод sort()
работает на месте и возвращает None
. Вы должны сначала сохранить список, а затем вызвать сортировку по нему. Для b вы сначала создаете список, затем сортируете его, при этом возвращаемое значение sort()
присваивается b, а первоначальный список теряется.
Я соглашаюсь с GordonB относительно усечения опций. Чрезмерно долгие опции может быть трудно считать, и поскольку Вы упомянули, что это выглядит ужасным.
Если бы Ваше выпадающее заполняется от ввода данных пользователем, однако, я ограничил бы длину. То, что может быть сказано с 15 словами, должно быть сказано с 5..., если это не может, затем возможно, выпадающим не является Ваш наилучший вариант.
Например, если Ваши опции являются заголовками научно-исследовательских работ и их авторов, можно, вероятно, сократить их вниз до нескольких ключевых слов ("Теория струн и Вы [Brown 2008]"). С другой стороны, если сами опции отличаются только несколькими словами и теряют значение, если они являются усеченными (например, список опций как "Арахисовое масло и виноград превращает тестовую систему в желе с морковными палочками, и соевое молоко" и "Арахисовое масло и бойзенова ягода превращают sandwith в желе с морковными палочками и 2%-м молоком"), возможно, Вы лучше обслуживались бы путем отображения всех опций последовательно, сопровождались бы флажком или переключателем как соответствующие.
(Если Вы используете ASP.NET, в основном я говорю что использование повторителя вместо DropDownList),
Этот второй подход мог бы также позволить Вам включать другие элементы, что Вы не сможете в выпадающем. Смотрите на эту страницу результата поиска Amazon для идей.
Усечение с подсказкой было бы моим выбором....
В прошлый раз, когда я должен был сделать это, я использовал управление telerik, которое было вполне богатым UI.
Дайте элементу максимальную ширину со свойством CSS max-width
.
Большинство браузеров показывает варианты в полной ширине независимо от фактической ширины dropdown тогда как обрезки IE их к ширине избранного поля. Таким образом, проблемой является действительно конкретный браузер.
Я сделал решение с помощью абсолютного расположения на выпадающее так, чтобы я мог расшириться, это - ширина на парении в IE, не повреждая мое расположение. Немного hacky, но это - одна опция.
Я использовал коммерческое управление ASP.NET, которое реализовано с помощью <отделения>, а не <выбора>. Таким образом, мы могли поместить многострочные элементы на него, разработать его, как мы хотели, и сделайте некоторый другой материал.
Зависит, как широкий Вы говорите, каков контекст. Часто это сводится к проблеме проектирования, а не проблеме кодирования. Если текст будет действительно длинен, то у Вас будут проблемы удобства использования независимо, потому что чтение длинного текста в выпадающем является трудным. Мои опции были бы:
Если выпадающее является действительно узким, и самые долгие объекты не очень длинны (например, 3-4 слова) изменяют дизайн для размещения его.
Если текст действительно длинен (например, предложения) затем усекают его, если Вы можете. Иногда текст не поддается этому (например, можно закончить с несколькими объектами с тем же текстом). Вы не можете действительно поместить подсказки на объекты списка выборки.
Если текст является действительно длинным и не может быть усеченным, можно хотеть рассмотреть другую возможность UI.
Я понимаю, что довольно поздно ответил на этот вопрос, но я искал ответ и, возможно, нашел довольно элегантное решение.
Посмотрите здесь:
Первая ссылка говорит о нескольких решениях, прежде чем рекомендовать решение, основанное на второй ссылке.
Идея состоит в том, что при нажатии вы изменяете ширину тега
так, чтобы он был достаточно большим, чтобы отображать полный текст параметров. Сохраняя тег
внутри div с параметром переполнения, установленным на «скрытый», он не мешает остальной части страницы.
Попробуйте - неплохое решение.