2010-01-19 50 views

回答

4

听起来像你需要添加一个标签为“其他”的单选按钮。当用户单击单选按钮时,将出现一个文本框,允许用户输入一个新值,您可以将其保存到数据库并在下拉菜单中显示。

编辑:
快速片段,使使用JavaScript控制:

<script language="javascript" type="text/javascript"> 
     function radioclicked() { 
     textObj = document.getElementById('<NAME OF TEXT BOX'); 
     textObj.disabled = false; 
     }  
    </script> 

您可以使用复选框代替单选按钮,使enabled属性进行切换。

要完全隐藏文本框,那么你将不得不看看jQuery/Ajax。

+0

我是全新的MVC和网络应用程序,我的经验是在WinForms。如何在单击单选按钮时显示文本框? – RememberME 2010-01-19 19:45:33

+0

我从来没有使用过jQuery。那是需要的吗? – RememberME 2010-01-19 20:09:02

+0

如果你想控制可见性,你可以使用jQuery。或者,如果您只想启用禁用控件,则可以使用JavaScript。 – 2010-01-19 20:21:18

0

此外,组合框还允许用户除了从列表中选择外还输入值。

0

我的MVC并非如此,但我认为这仍然适用,因为MVC只是模型视图控制器。 如果您在窗体上投下可见= 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; 
     } 
} 

现在您可以输入您的值并重新存储回数据库。

1

为什么我们不能使用像www.combodropdown.info这样的轻量级加载器来达到这个目的?如果您的应用程序已经引用jQuery,您甚至可以考虑使用jQuery的AutoComplete插件。

相关问题