【问题标题】:combobox for ASP.NET (with or without AjaxControlToolkit)用于 ASP.NET 的组合框(带或不带 AjaxControlToolkit)
【发布时间】:2015-02-27 14:07:47
【问题描述】:

我需要一个用于 ASP.NET 站点的组合框。 所以控件需要:

1) - 通过下拉列表提供多个可供选择的选项

2) - 让用户将不存在的字符串写入下拉列表。

对于windows 应用程序,此组合框控件已存在于C# 中(并且工作正常)。 但是在 ASP.NET 默认控件中,没有这样的组合框。只有一个下拉列表 (1) 和一个文本框 (2)。 下拉列表不允许您使用不属于控件的 ItemList 的字符串设置 My_DropDownList.Text。

我用谷歌搜索了一下,测试了一些自定义控件,但没有按预期工作。 然后我发现了 AjaxControlToolkit。 它应该提供我需要的 ASP.Net 的确切 ComboBox。

我安装了这个包,按照预先要求添加了一个 ajax ScriptManager,然后添加了 ComboBox。 看起来您可以使用新值更改 My_ComboBox.Text,但这个新值必须属于控件的 ListItem。 否则我得到错误: “...有一个无效的 SelectedValue,因为它不存在于项目列表中”

我错过了什么吗?我的理解是我们应该能够在组合框中设置任何值(至于 VS 为 win 应用程序提供的默认 C# 组合框)。

或者,您是否知道我可以添加任何其他控件来避免此问题?

当然,我有可能做这样的事情:

My_ComboBox.Add(new ListItem("my_String");
My_ComboBox.Text = "my_String";

但我很确定你会为我提供更优雅的解决方案。

提前致谢。

【问题讨论】:

    标签: asp.net combobox


    【解决方案1】:

    您对 ComboBox 的心智模型可能是“带有有用的自动完成列表的文本框”。但是,这不是 AjaxControlToolkit ComboBox 的含义:相反,它是一个下拉菜单,可自动添加用户输入的新项目。

    因此,从代码的角度来看,它的行为更像是 Dropdown 而不是 TextBox。您的理解是正确的:要将文本设置为以前未知的条目,您需要先将其添加到列表中。如果文本由用户输入,则会自动完成。

    如果您的用例宁愿需要“带有有用的自动完成列表的文本框”,我会停止搜索组合框并开始投资自动完成文本框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 2014-10-12
      • 2010-09-27
      • 1970-01-01
      相关资源
      最近更新 更多