Asp.net C#的自动完成功能不起作用?

时间:2014-03-11 16:44:30

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

我已经尝试了一切。我试图让自动完成工作输入文本框,我无法让它工作。我将它实现到DNN网页这里是我用于此自动完成的代码...

我每次都会遇到错误。

欢迎参加团队观察会议。

谢谢。

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;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

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

查看您的代码,您的服务方法的网址突出。你指定你指定url: "View.ascx/GetPartNumber",但我认为你或者意味着其他东西(可能是View.ashx或View.asmx)。您是否可以通过浏览器点击您的服务方式作为简单的GET?

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