Я заполняю выпадающий список в С# asp.net-MVC из таблицы SQL, используя Linq2Sql. Я хотел бы, чтобы пользователь мог ввести то, что отсутствует в списке, в раскрывающееся меню и добавить его в таблицу. Возможно ли это?
Похоже, вам нужно добавить радиокнопку с надписью "Другое". Когда пользователь нажимает на переключатель, появляется текстовое поле, которое позволяет пользователю вводить новое значение, которое вы можете сохранить в своей базе данных и отобразить в раскрывающемся списке.
РЕДАКТИРОВАТЬ:
Быстрый фрагмент, позволяющий управлять с помощью JavaScript:
<script language="javascript" type="text/javascript">
function radioclicked() {
textObj = document.getElementById('<NAME OF TEXT BOX');
textObj.disabled = false;
}
</script>
Вы можете использовать флажок вместо переключателя, чтобы можно было включить включенное свойство.
Чтобы полностью скрыть текстовое поле, вам нужно будет посмотреть в jQuery/Ajax.
Почему мы не можем использовать легкую надстройку, например www.combodropdown.info для этой цели? Вы даже можете рассмотреть плагин AutoComplete из jQuery, если ваше приложение уже ссылается на jQuery.
Мой MVC не так, но я предполагаю, что это все еще применяется, поскольку MVC - это просто контроллер представления модели. Что делать, если вы бросаете drop down на вашу форму visible = true и текстовое поле на вашей форме visible = false.
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
onselectedindexchanged="DropDownList1_SelectedIndexChanged">
</asp:DropDownList>
<asp:TextBox ID="TextBox1" runat="server" Visible="False"></asp:TextBox>
Заполните свой снимок:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
List<int> s = Enumerable.Range(1, 10).ToList();
DropDownList1.DataSource = s;
DropDownList1.DataBind();
DropDownList1.Items.Add("Other");
}
}
Добавить событие для обработки, если кто-то выбирает другое. Если они действительно видят текстовое поле:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (this.DropDownList1.SelectedItem.Text)
{
case "Other":
this.TextBox1.Visible=true;
break;
default:
this.TextBox1.Visible=false;
break;
}
}
Теперь вы можете ввести свое значение и снова вернуть обратно в db.
Кроме того, combobox позволяет пользователю вводить значение в дополнение к выбору из списка.