c# - 如何将 asp.net ajax 工具箱自动完成中的选定值添加到标签?

标签 c# asp.net autocomplete ajaxcontroltoolkit

我已经使用以下 asp.net 和 C# 代码让 Ajax 工具包自动完成工作。

<form id="form1" runat="server">
    <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    </asp:ToolkitScriptManager> 
    <div>
        Search our Languages: <asp:TextBox ID="txtLanguage" runat="server"></asp:TextBox>

        <asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
            TargetControlID="txtLanguage" MinimumPrefixLength="1" 
            ServiceMethod="GetCompletionList" UseContextKey="True">
        </asp:AutoCompleteExtender>
        <br />
        <br />
        <asp:Button ID="btnAddSelected" runat="server" Text="Add to chosen Languages >" 
            onclick="btnAddSelected_Click" />
        <br />
        <br />
        <asp:Label ID="lblSelectedLanguages" runat="server" Text=""></asp:Label>
    </div>
</form>

这是我的 C# 代码:

[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static string[] GetCompletionList(string prefixText, int count, string contextKey)
{
    // Create array of languages. 
    string[] languages = { "Afrikaans", "Albanian", "Amharic", "Arabic", "Azerbaijani", "Basque", "Belarusian", "Bengali", "Bosnian", "Bulgarian" };

    // Return matching languages. 
    return (from l in languages where l.StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase) select l).Take(count).ToArray();
}

protected void btnAddSelected_Click(object sender, EventArgs e)
{
    lblSelectedLanguages.Text += txtLanguage.Text += ", ";
}  

单击按钮时,所选语言将添加到标签中,但是我想删除该按钮,并使用 Ajax 工具包中的部分回发,将自动完成中的所选项目自动添加到标签中。

有人可以建议我如何实现这一目标吗?

谢谢。

最佳答案

  1. 处理 AutoCompleteExtender 控件上的 OnClientItemSelected 以运行 JavaScript 函数
  2. JavaScript 所做的只是在做出选择时触发 TextChanged 事件(适用于 Enter 和左键单击)

ASPX:

<head runat="server">
    <title></title>
    <script type="text/javascript">
        function ItemSelected(sender, args) {
            __doPostBack(sender.get_element().name, "");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    </asp:ToolkitScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            Search our Languages:&nbsp;
            <asp:TextBox ID="txtLanguage" autocomplete="off" runat="server" OnTextChanged="TextChanged" />
            <asp:AutoCompleteExtender OnClientItemSelected="ItemSelected" ID="AutoCompleteExtender1"
                runat="server" TargetControlID="txtLanguage" MinimumPrefixLength="1" ServiceMethod="GetCompletionList"
                UseContextKey="True">
            </asp:AutoCompleteExtender>
            <br />
            <asp:Label ID="lblSelectedLanguages" runat="server"></asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>
    </form>
</body>

隐藏代码:

protected void TextChanged(object sender, EventArgs e)
{
    lblSelectedLanguages.Text += txtLanguage.Text += ", ";
}

关于c# - 如何将 asp.net ajax 工具箱自动完成中的选定值添加到标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14519311/

相关文章:

javascript - 使用此谷歌地图 API 自动完成示例。修改这个函数可以得到经纬度吗?

autocomplete - *真的*关闭zsh自动更正

solr 自动完成多个字段中的关键字

c# - 使用 JavaScript 将参数传递给服务器方法

c# - 使用 C# 获取 Int/short/byte 结构字节表示

c# - 由于关系问题,无法将行插入数据库

ASP.NET:如何更改验证失败的控件的背景颜色?

c#从文本文件复制到word文档

c# - 管理 Application Insights Cookie

c# - HTTP 处理程序的 Post 方法