【问题标题】:Asp.net autocomplete Extender not workingAsp.net 自动完成扩展器不工作
【发布时间】:2017-05-18 15:26:24
【问题描述】:

我想用数据库使文本框自动完成。我使用了以下代码,但在输出扩展器中显示了 html 代码。它甚至没有在函数后面执行代码。以下我使用的代码无法正常工作。

ASPx 页面

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="CS.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
<asp:ScriptManager ID="ScriptManager1" runat="server" 
EnablePageMethods = "true">
</asp:ScriptManager>

<asp:TextBox ID="txtContactsSearch" runat="server"></asp:TextBox>
<cc1:AutoCompleteExtender ServiceMethod="SearchCustomers" 
    MinimumPrefixLength="2"
    CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" 
    TargetControlID="txtContactsSearch"
    ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
</cc1:AutoCompleteExtender>
    </div>
    </form>
</body>
</html>

C#代码

[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> SearchCustomers(string prefixText, int count)
{
    using (MySqlConnection conn = new MySqlConnection())
    {
        conn.ConnectionString = ConfigurationManager
                .ConnectionStrings["conio"].ConnectionString;
        using (MySqlCommand cmd = new MySqlCommand())
        {
            cmd.CommandText = "select clientID from clientsDetails where "  +
            "clientID like @SearchText + '%'";
            cmd.Parameters.AddWithValue("@SearchText", prefixText);
            cmd.Connection = conn;
            conn.Open();
            List<string> customers = new List<string>();
            using (MySqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    customers.Add(sdr["clientID"].ToString());
                }
            }
            conn.Close();
            return customers;
        }
    }
}

【问题讨论】:

  • 确保您已注册AjaxControlToolkit并添加ScriptManager
  • @Div 是的,已经添加了。
  • 请添加到问题中!
  • 参考this link
  • @Div 我已经更新了问题

标签: c# asp.net autocompleteextender


【解决方案1】:
    add  <cc1:ToolkitScriptManager></cc1:ToolkitScriptManager> instead of   <asp:ScriptManager></asp:ScriptManager>

your aspx page  ----

    <cc1:ToolkitScriptManager ID="ScriptManager1" runat="server" 
    EnablePageMethods = "true">
    </cc1:ToolkitScriptManager>

    <asp:TextBox ID="txtContactsSearch" runat="server"></asp:TextBox>
               <cc1:AutoCompleteExtender ServiceMethod="SearchCustomers" MinimumPrefixLength="1" CompletionInterval="10"  
                EnableCaching="false" CompletionSetCount="10" TargetControlID="txtContactsSearch" ID="AutoCompleteExtender2"  
                runat="server" FirstRowSelected="false"></cc1:AutoCompleteExtender>  


    your cs page----

    [System.Web.Script.Services.ScriptMethod()]
            [System.Web.Services.WebMethod]
            public static List<string> SearchCustomers(string prefixText, int count)
            {

                using (SqlConnection conn = new SqlConnection())
                {
                    conn.ConnectionString = ConfigurationManager
                            .ConnectionStrings["conio"].ConnectionString;
                    using (SqlCommand cmd = new SqlCommand())
                    {
                        cmd.CommandText = "select clientID from clientsDetails where "+"clientID like @SearchText + '%'";
                        cmd.Parameters.AddWithValue("@SearchText", prefixText);
                        cmd.Connection = conn;
                        conn.Open();
                        List<string> customers = new List<string>();
                        using (SqlDataReader sdr = cmd.ExecuteReader())
                        {
                            while (sdr.Read())
                            {
                                customers.Add(sdr["name"].ToString());
                            }
                        }
                        conn.Close();
                        return customers;
                    }
                }
            }

【讨论】:

    【解决方案2】:

    您正在查看 URL 上包含 TextBox 的页面:

    http://localhost:64890/CS

    这似乎是由route 映射到页面

    CS.aspx

    AutoCompleteExtender发送它的AJAX请求时,它会发送到这个地址:

    http://localhost:64890/CS/SearchCustomers

    这很可能是由你设置的一些route 拾取的,结果是它没有转到CS.aspx.cs 中的PageMethod,而是以其他方式处理。

    假设您的 CS.aspx 页面位于 Web 应用程序根文件夹中,您可以通过添加以下内容来修复它:

    ServicePath="~/CS.aspx"
    

    给你AutoCompleteExtender。像这样:

    <cc1:AutoCompleteExtender ServiceMethod="SearchCustomers"
        MinimumPrefixLength="2"
        ServicePath="~/CS.aspx"
        CompletionInterval="100" EnableCaching="false" CompletionSetCount="10"
        TargetControlID="txtContactsSearch"
        ID="AutoCompleteExtender1" runat="server" FirstRowSelected="false">
    </cc1:AutoCompleteExtender>
    

    【讨论】:

    • 没有人。我像你展示的那样在扩展器中设置了属性,但现在没有显示输出。我还通过创建新项目在简单的 Web 表单中尝试了相同的代码,它运行良好。在我的实际项目中,我路由。
    • @SUN 在您的解决方案/Web 应用程序中,CS.aspx 的路径是什么。另外,您可以将您的路线添加到问题中吗?
    • 我的页面名称是 auto.aspx 所以我的服务路径是 ~/auto.apsx
    猜你喜欢
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多