我正在使用Linq2Sql从SQL表填充c#asp.net-MVC中的下拉列表。我希望用户能够在下拉列表中输入不在列表中的内容并将其添加到表中。这可能吗?
答案 0 :(得分:4)
听起来你需要添加标有“其他”的单选按钮。当用户单击单选按钮时,将出现一个文本框,允许用户输入一个新值,您可以将该值保存到数据库并显示在下拉列表中。
编辑:
使用JavaScript启用控件的快速代码段:
<script language="javascript" type="text/javascript">
function radioclicked() {
textObj = document.getElementById('<NAME OF TEXT BOX');
textObj.disabled = false;
}
</script>
您可以使用复选框而不是单选按钮,以便可以切换启用的属性。
要完全隐藏文本框,您必须查看jQuery / Ajax。
答案 1 :(得分:1)
为什么我们不能为此目的使用像www.combodropdown.info这样的轻量级附加组件?如果您的应用已经引用了jQuery,您甚至可以考虑使用jQuery的AutoComplete插件。
答案 2 :(得分:0)
除了从列表中挑选外,组合框还允许用户输入值。
答案 3 :(得分:0)
我的MVC并非如此,但我认为这仍然适用,因为MVC只是模型视图控制器。 如果您在表单上将下拉列表设置为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。