2009-08-29 63 views
0

我正在开发用于数据输入的ASP.NET表单。用户必须从充满大约1000个客户端的下拉列表中选择一个客户端。为用户提供过滤下拉列表的搜索功能

现在,客户端列表不断增加,用户请求我添加查找功能:他们想输入部分名称并使用名称匹配的客户端筛选下拉列表。因此,如果他们键入'aaa',他们希望只看到名称中带有'aaa'的客户。

我已经看过ajax控件工具包的自动完成功能,但是可以在文本框中使用,而不是在下拉列表中使用。

任何人都可以提出一个很好的解决方案吗?

回答

1

然后在文本框中使用它!当然,下拉列表中的人知道客户的名字。在我看来,这种情况几乎没有什么区别。

我一直在使用jQuery标签建议添加在我的MVC应用程序,它工作得很好。

http://remysharp.com/2007/12/28/jquery-tag-suggestion/

如果你有兴趣只是评论,我会给你我使用的代码。

如果您确实想使用下拉列表,您可以在更新面板中使用文本框和下拉列表。当用户输入文本(然后单击按钮)时,可以使用筛选出的用户输入内容的结果填充下拉列表。

+0

我使用下拉列表的原因是客户端的Id绑定到(选定的)值。当使用文本框时,我必须使用名称查找客户端。 – edosoft 2009-08-29 22:07:54

+0

正在查找客户端ID是一个主要问题?如果下拉列表只有静态值,我可以看到这是一个问题,但是如果从数据库填充它,应该很容易查找ID。我总是觉得标签表明文本框增加了更多的控制,灵活性,并且肯定会对用户更具吸引力。 – j82374823749 2009-08-29 23:13:12

+0

为了简单起见,我决定使用文本框+下拉选项。谢谢 – edosoft 2009-08-30 18:47:24

0

我认为一个文本框实际上是首选为此。一个选择框不会邀请输入 - 所以它成为一个隐藏的技巧来过滤它(更不用说,Firefox几乎会做正确的反正)。

您可以轻松地将图像投射到文本框旁边,以指示它具有选项,这允许鼠标驱动或键盘驱动的交互。

我偏爱JQuery,所以我会使用JQuery's autocomplete - 它具有配置选项以要求匹配,或者单击该框将会下拉所有项目。

如果您对“渐进式增强”感兴趣,那么您最好使用传统的选择输入(用于辅助功能),将被自动完成文本框替换为。喜欢的东西:

<select id="s"> 
    <option value="foo">Foo</value> 
    <option value="bar">Bar</value> 
</select> 

var d = $('#s OPTION').map(function() { 
    return $(this).text(); 
}); 

$('#s').hide().append('<input type="text" />') 
    .autocomplete(d, { 
     mustMatch: true, 
     minChars: 0, 
     autoFill: true, 
     matchContains: false 
    }) 
    .result(function(e, d, f) { 
     // Select option for the form to submit 
     $('#s').val(d); 
    }); 

你也可以离开选择可见的 - 这使得它更灵活,但可能更混乱 - 和挂钩的事件处理程序的选择框来更新文本框,以及使他们保持同步。