【发布时间】:2011-03-10 21:59:30
【问题描述】:
我的 ASP.net 表单上有一个文本框和一个按钮,用于执行搜索。我从 AJAX 工具包中添加了一个自动完成扩展程序,以在用户键入时显示建议。这工作正常,但是我想要发生的是当用户在显示的建议列表中选择一个项目时触发按钮的 Click 事件。有人知道怎么做吗?
【问题讨论】:
标签: asp.net asp.net-ajax autocomplete autocompleteextender
我的 ASP.net 表单上有一个文本框和一个按钮,用于执行搜索。我从 AJAX 工具包中添加了一个自动完成扩展程序,以在用户键入时显示建议。这工作正常,但是我想要发生的是当用户在显示的建议列表中选择一个项目时触发按钮的 Click 事件。有人知道怎么做吗?
【问题讨论】:
标签: asp.net asp.net-ajax autocomplete autocompleteextender
由于项目选择事件将触发客户端 JavaScript 事件,我通常将以下代码添加到我的 OnClientItemSelected 事件方法中:
<script type="text/javascript" language="javascript">
function YourMethodHere(source, eventArgs)
{
$get('ctl00_BodyPlaceHolder_btnAutoSubmit').click();
}
</script>
您需要相应地找到按钮的正确名称并将其替换为上面。
作为一项附加功能,有时我希望能够在 AutoComplete 中键入一个值,如果我知道我想要什么,就立即按 Enter 键。为此,您需要将 AutoComplete 文本框和按钮包装在面板中,并相应地设置默认按钮:
<asp:Panel ID="pnlAutoCompleteStuff" runat="server" DefaultButton="btnAutoSubmit">
Search: <asp:TextBox ID="txtSearch" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ID="aceSearch" runat="server"
TargetControlID="txtSearch"
ServiceMethod="YourMethodHere"
ServicePath="YourServicePath"
MinimumPrefixLength="4"
CompletionInterval="500"
EnableCaching="False"
OnClientItemSelected="AutoCompleteClientMethod"
CompletionSetCount="3">
</cc1:AutoCompleteExtender>
<asp:Button ID="btnAutoSubmit" runat="server" Text="Select" />
</asp:Panel
【讨论】:
将文本框的 Autopostback 设置为 true。
<asp:TextBox ID="SearchCityBox" CssClass="searchOne" runat="server" Width="500px" Height="18px" AutoPostBack="true" OnTextChanged="SearchCityBox_TextChanged"></asp:TextBox>
然后创建一个 onTextChanged 事件处理程序来执行与您的按钮相同的操作。或者您可以将其指向您的按钮所具有的同一个事件处理程序
【讨论】:
看看onclientitemselected
这里有一些信息: Implementing Auto-Suggest Using AutoCompleteExtender Control
【讨论】: