使用"链接"按钮的自动完成下拉菜单-或者" AJAX疯狂"
好的,所以我想要一个自动完成下拉列表,其中包含链接按钮。因此,用户将光标放在"文本框"中,并具有一系列选项。他们可以开始键入以缩小列表的范围,或者选择列表中的选项之一。当他们单击(或者按Enter键)时,链接到的数据集将通过选择内容进行过滤。
好的,这就像将AJAX自动完成包装在下拉列表中一样容易吗?不? (请?)
解决方案
回答
我们必须处理下拉列表的OnSelectedIndexChanged事件,才能根据用户选择重新绑定数据集。如果要在异步回发中进行过滤,请包装数据集(或者我假设的数据网格),然后将其下拉列表放在UpdatePanel中。无论如何,这是一种方法。
回答
该窗口小部件可以由三个项目组成:文本输入,按钮输入和用于保存结果的无序列表。
__________ _ |__________||v|__ <-- text and button | | <-- ul (styled to appear relative to text input) | | | | |______________|
ul显示在:
- 文本输入的" keyUp"事件(如果值非空)
- 按钮输入的"单击"事件(如果当前不可见)
ul隐藏在:
- 按钮输入的"单击"事件(如果当前可见)
- 列表项的"单击"事件
当显示ul或者触发文本输入的'keyUp'事件时,需要对服务器进行AJAX调用以更新列表。
成功时,结果应放在ul中。创建列表项时,应在其上添加一个"单击"事件,以设置文本输入值并隐藏ul(可能必须在li内添加链接以将该事件添加到该事件)。
最难的部分是CSS。 JavaScript非常简单,尤其是具有支持多个浏览器的原型之类的固态库。
我们可能需要支持这些项目的某些ID,因此我们可以将一些隐藏的输入添加到每个具有ID的列表项中,并在文本输入旁边添加以存储所选项目ID。
回答
我认为,我们完全不应该为此使用AJAX。
原因如下:
(1)专注:他可以选择的所有选项均显示在下拉菜单中。这意味着所有可能的选项已经发送到客户端。
(2)如果用户输入内容,则下拉列表中的条目数将被过滤以匹配。这可以在客户端轻松完成。暂时关闭并返回到服务器只会使事情变慢。
phpguru.org具有"几乎完全"我们需要的控件:
http://www.phpguru.org/static/AutoComplete.html#demo
它与我们所需要的稍有不同,因为它显示的是双击下拉列表,而不是焦点列表。那应该很容易修改。
我希望这有帮助。
回答
我不确定我们想要什么,但Ra-Ajax AutoCompleter肯定支持其内部具有"控件"。我们可以在事实上使用堆叠的堆栈(右上角)的搜索框中看到该链接。但这也可以是LinkButtons,如果我们愿意...
免责声明;我和Ra-Ajax合作...