Asp: можете ли вы установить видимый текст в выпадающем списке?
У меня есть различные DDLs, которые дают пользователю доступ к предыдущим записям в редактируемой строке. Он работает нормально, за исключением того, что он будет выглядеть лучше, если DDLs появится только как стрелка без текста рядом с ней. Я предполагаю, что DDLs автоматически заполняет этот текст тем, что является первой записью, основанной на команде SQL, из которой извлекается DDL, но можно ли это как-то отключить или настроить?
Edit: сразу после публикации этого я узнал, что вы можете ограничить ширину DDL, чтобы заставить его отображать только стрелку. Оставляю это на случай, если кто-то еще придет искать тот же ответ.
Что я уже пробовал:
Установка OnClick DLL для запуска функции, которая выполняет правильную команду SQL. По какой-то причине это привело к тому, что стрелка DDL вообще ничего не делала при нажатии.
Richard Deeming
Если вы просто хотите, чтобы список был пустым до тех пор, пока пользователь не выберет элемент, добавьте пустой элемент в начало списка.
Изменение ширины так, чтобы пользователь не мог видеть, какой элемент выбран, звучит как плохой пользовательский интерфейс.
OlivesForDinner
Насколько я могу судить, это визуально идентично добавлению пустого элемента. Это просто приводит к тому, что окно со стрелкой отображается без ничего рядом с ним, что и было мне нужно. Почему это плохо?
Richard Deeming
Потому что пользователь не может видеть, что он выбрал.
OlivesForDinner
Нет. То, что вы выбрали, видно. Как я уже сказал, затронута только кнопка.
Vincent Maverick Durano
Отображение только стрелки может сбить с толку некоторых пользователей, просматривающих ее. Они могут подумать, что выпадающие списки ничего в нем не содержат. Если вы не хотите добавлять пустую запись в первый элемент, вы можете добавить элемент, который отображает что-то вроде "Select" или" - - - - - -", просто чтобы привлечь внимание пользователей к выбору чего-то из выпадающего списка.
Во всяком случае, это только моя точка зрения. Если то, что у вас есть прямо сейчас, работает для вашего клиента, тогда вас никто не остановит ;)
OlivesForDinner
Здесь есть две ортогональные проблемы.
Во-первых, то, что выбирается до того, как пользователь нажимает DDL, не имеет значения, потому что DDL заполняются данными истории редактирования. Это кнопка отмены, которая возвращает несколько правок назад и позволяет выбрать, к какому предыдущему входу вернуться. Эта функциональность объясняется пользователю.
Во - вторых, я не могу добавить пустую (или фиктивную) запись. Я вовсе не настаиваю на одном решении вместо другого здесь; это просто тот, который у меня есть в наличии. Я новичок в ASP, и ничто из того, что я пробовал, не делает ничего большего, чем исключение, которое говорит, что я ссылаюсь на объект, которого там нет.
Например, если gv-это мой GridView:
((Выпадающий список)gv.Rows[gv.EditIndex].FindControl("nameofDDL")).Элементы.Добавить("");
производит это исключение. Что странно, так это то, что я использовал эту же самую вещь для ссылки на другие элементы управления без каких-либо проблем. Я могу сослаться на элемент управления, который находится в том же шаблоне редактирования, что и этот DDL, просто отлично. У него практически такой же путь. Я действительно не понимаю.
Vincent Maverick Durano
доступ к элементам управления в режиме редактирования требует дополнительной проверки, так как вам необходимо определить состояние GridView. Например:
if (e.Row.RowType == DataControlRowType.DataRow) { if ((e.Row.RowState & DataControlRowState.Edit) > 0) { DropDownList ddl = (DropDownList)e.Row.FindControl("YourDropDownListID"); } }
OlivesForDinner
Спасибо за это. Это очень помогает; я хотел создать такую проверку, но не был уверен, как это сделать. Не могли бы вы взглянуть на другой мой вопрос, связанный с этим? Похоже, ты знаешь, что происходит.
https://www.codeproject.com/Questions/1250501/Gridview-editindex-not-updating-possibly-related-t