Ajax自动完成扩展程序并获取所选项目的ID?

时间:2013-06-27 17:44:11

标签: asp.net ajax ajaxcontroltoolkit

我正在使用自动填充扩展程序在用户输入时建议名称。如何在用户选择项目后获取选择值?我想我可以使用onclientitemselected但我不熟悉如何写这个?我需要根据autocompleteextender文本框中的选择填充文本框。谢谢

 <asp:TextBox ID="TextBox1" runat="server" Height="27px" Width="570px"></asp:TextBox>
        <asp:AutoCompleteExtender ID="AutoCompleteExtender" runat="server" 
    DelimiterCharacters="" Enabled="True" ServicePath="AutoComplete.asmx"  
    ServiceMethod="GetCompletionList" TargetControlID="TextBox1" 
    MinimumPrefixLength="2" UseContextKey="true" ContextKey="StateDropDown" 
            CompletionListElementID="autocompleteDropDownPanel">
</asp:AutoCompleteExtender>

2 个答案:

答案 0 :(得分:4)

为此,您需要使用ID和文本

从Web服务方法返回列表

此处“lst”是包含数据来源数据的实际列表。

List<string> items = new List<string>(count);
        for (int i = 0; i < lst.Count; i++)
        {
            string str =AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(lst[i].Text,Convert.ToString(lst[i].IDValue));                
            items.Add(str);

        }
        return items.ToArray();

然后简单的javascript

function GetID(source, eventArgs )
    {
        var HdnKey = eventArgs.get_value();
        document.getElementById('<%=hdnID.ClientID %>').value = HdnKey;
    }

并且不要忘记在auto complete extender中设置属性 的 OnClientItemSelected = “的getId”

答案 1 :(得分:0)

AutoCompleteExtender仅扩展了ASP.NET TextBox控件,因此如果您想知道文本何时更改,那么只需在TextChanged上引发TextBox事件控制,像这样:

Markup:
<asp:TextBox ID="TextBox1" runat="server" Height="27px" Width="570px" OnTextChanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>

Code-Behind:
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
    // Do something here with textbox value
}