1

私は、検索ボックスにオートコンプリート機能が必要な自動車部品の Web サイトに取り組んできました。

私がすでに試したこと:

i)[サービスを使用してajaxエクステンダーを操作しようとしましたが運がありません] ii)[jquery ui組み込みオートコンプリートプラグインも試しました運がありません]

しかし、1日の完全な闘争の後、最終的に単純なaspxページで機能するようになりましたが、このコードをマスターページで使用すると、機能しなくなりました。

この部分では、皆さんが必要です:)

//code inside the masterpage head
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
<script src="scripts/jquery.autocomplete.min.js" type="text/javascript"></script>
<link href="css/jquery.autocomplete.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
    $(document).ready(function() {
    $("#ctl00_myTextBox").autocomplete('select.ashx');
    });
 </script>

//注: このテキストボックスはコンテンツページではなくマスターページにもあります

<asp:TextBox ID="myTextBox" runat="server" Width="250" ></asp:TextBox>

//これは httphandler のコードです ... //注: データを取得するために LuceneIndexes を使用しています

public class select : IHttpHandler {

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/javascript";
        if (!String.IsNullOrEmpty(context.Request.QueryString["q"]))
       {
           foreach (string s in GetAutoCompleteValues(context.Request.QueryString["q"]))
           {
               context.Response.Write(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(s)+Environment.NewLine);
           }
       }

    }
    public static string[] GetAutoCompleteValues(string prefixText)
    {
           DataTable dt = GetSearchList.GetResult(prefixText);
           List<string> RowNames = new List<string>();
           foreach (DataRow drow in dt.Rows)
           {
               RowNames.Add(drow[1].ToString() + " " + drow[2].ToString() + " " + drow[3].ToString() + " " + drow[4].ToString() + " " + drow[5].ToString() + " " + drow[6]);
           }
           return RowNames.ToArray();
    }
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

事前に感謝します...

4

1 に答える 1

1

この問題は、動的にレンダリングされたコントロール ID を使用していないために発生し、マスター ページに配置した瞬間から ID が変更されます。

JavaScript のこの行で、次のように使用しますmyTextBox.ClientID

$("#<%=myTextBox.ClientID%>").autocomplete('select.ashx');

コントロールIDを動的にレンダリングし、jQueryがそれを見つけられるようにします。

于 2012-12-08T06:02:14.780 に答える