【问题标题】:AutoComplete for Asp.net C# Not working?Asp.net C# 的自动完成功能不起作用?
【发布时间】:2014-03-11 16:44:29
【问题描述】:

我什么都试过了。我正在尝试让自动完成功能为输入文本框工作,但我无法让它工作。我正在将它实现到 DNN 网页中,这是我用于此自动完成的代码...

我每次都会出错。

欢迎我参加 teamviewer 会议。

谢谢。

ASP.NET 代码

<asp:Panel ID="pnlInfoSearch" runat="server">
  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>  
  <script type="text/javascript">
    $(document).ready(function () {
        SearchText();
    });
    function SearchText() {
        $(".autosuggest").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "View.ascx/GetPartNumber",
                    data: "{'PartNumber':'" + document.getElementById('txtPartNum').value + "'}",
                    dataType: "json",
                    success: function (data) {
                        response(data.d);
                    },
                    error: function (result) {
                        alert("Error");
                    }
                });
            }
        });
    }
</script>


<div id="introcopy">
    <h2>Product Info Center</h2>
    <p>Download technical and quality documents, check inventory and order samples for your parts.</p>
</div> 
<div class="demo">
    <p>Enter a part number (or portion of a part number) to retrieve information about that product.</p>
    <input type="text" id="txtPartNum" value="Enter part #..." style="height: 18px" class="autosuggest" />
</div>
<script type="text/javascript">
// <![CDATA[
    var _sDefaultText = 'Enter part #...';
    jQuery('#txtPartNum').keypress(function (e) {
        if (e.which == 13) {
            e.preventDefault();
            window.location.href = '<%= new Uri(String.Concat("http://", Page.Request.UserHostName, Page.Request.RawUrl)).AbsolutePath %>?partnum=' + jQuery(this).val();
        }
    }).focus(function () {
        if (jQuery(this).val() === _sDefaultText) {
            jQuery(this).val('');
        }
    }).blur(function () {
        if (jQuery(this).val().length == 0) {
            jQuery(this).val(_sDefaultText);
        }
    });
// ]]>
</script>

<br class="clear" />
</asp:Panel>

C# 代码....

[WebMethod]
public static List<string> GetPartNumber(string PartNumber)
{
        List<string> result = new List<string>();

        using (SqlConnection conn = new SqlConnection("HIDDEN"))
        {
            using (SqlCommand cmd = new SqlCommand("select PartNumber from Products.Products where PartNumber LIKE @SearchText+'%'", conn))
            {
                conn.Open();

                cmd.Parameters.AddWithValue("@SearchText", PartNumber);

                SqlDataReader dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    result.Add(dr["PartNumber"].ToString());
                }

                return result;
        }
    }
}

【问题讨论】:

  • 旁注:您声称自动完成有问题,但将 SQL 代码作为自动完成的数据源样本而不是硬编码数据 - 请确保您知道“每次都出错”的来源和这些错误到底是什么意思。还要确保编辑标签以包含正确的 jQuery 一次。
  • 也就是说,贴出错误!

标签: c# asp.net sql-server ajax web-services


【解决方案1】:

如果您认为您的问题与 SQL 有关,请重构与 SQL 相关的代码,并使用一些已知部件号针对该方法编写一些测试。

查看您的代码,您的服务方法的 URL 脱颖而出。您指定了您指定了url: "View.ascx/GetPartNumber",但我假设您的意思是别的东西(可能是 View.ashx 或 View.asmx)。您是否可以通过浏览器以简单的 GET 方式访问您的服务方法?

当您在浏览器中访问此 URI 时会得到什么? /View.ascx/GetPartNumber?PartNumber=xyz

【讨论】:

    猜你喜欢
    • 2013-05-29
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 2020-11-14
    • 2014-03-11
    • 2014-01-16
    • 2011-03-14
    相关资源
    最近更新 更多