0

だから私はこれにかなり長い間(1週間以上)グーグルやスタックオーバーフローなどを検索してきました。この作業を行うための情報の編集を取得できないようです。

[ASPX ページ]

    <span>Make</span> <asp:TextBox ID="Make_SearchBox" runat="server" ToolTip="Enter Make"></asp:TextBox>
    <span>Model</span> <asp:TextBox ID="Model_SearchBox" runat="server" ToolTip="Enter Model"></asp:TextBox>

[ジャバスクリプト]

    <%--Autocomplete Function--%>
<script type="text/javascript">
    var value = "";
    $(document).ready(function () {
        $("#PageContent_Make_SearchBox").autocomplete("/WebHandlers/AutoComplete.ashx",{
            extraParams: { field: "Make" },
            autoFill: false
        });

        $("#PageContent_Model_SearchBox").autocomplete("/WebHandlers/AutoComplete.ashx", {
            extraParams: { field: "Model" },
            autoFill: false
        });
    });
  </script>

[ASHX ウェブハンドラー - C#]

    public void ProcessRequest(HttpContext context)
    {
        // INITIALIZING NEEDED VARS
        string query = "";
        string sql = "";

        // CHECK "field" QUERY AND PASS TO SWITCH
        string field = context.Request.QueryString["field"];
        if (field != null)
        {
            switch (field)
            {
                case "Make":
                    query = context.Request.QueryString["q"];
                    sql = "Select DISTINCT Make from Vehicle Where Make LIKE '%" + query + "%'";
                    break;

                case "Model":
                    query = context.Request.QueryString["q"];
                    sql = "Select DISTINCT Model from Vehicle Where Model LIKE '%" + query + "%' AND Make LIKE (((MAKE TEXTBOX VALUE)));
                    break;
            }
        }

        string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
        // CONNECT TO DATABASE, RUN QUERY AND RETURN DATA
        using (SqlConnection connection = new SqlConnection(connStr))
        using (SqlCommand command = new SqlCommand(sql, connection))
        {
            connection.Open();
            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    context.Response.Write(reader.GetString(0) + Environment.NewLine);
                }
            }
        }
    }

上記は、makeテキスト フィールドで問題なく動作します。makeフィールドに「toy」と入力すると、次のように渡されます。

GET http://localhost:26724/WebHandlers/AutoComplete.ashx?q=toy&field=Make

私がやりたいことは、ユーザーがメーカーを取得してモデルフィールドに書き込みを開始しそのメーカーに関連するモデルのみを検索することです。C# 側は簡単だと思いますが、SQL クエリだけですが、JQuery でmakeテキスト フィールドの値を取得してクエリ文字列に追加するにはどうすればよいでしょうか。$document.ready ではなく、テキスト ボックスがいっぱいになった後でのみ、 makeテキスト ボックスの値を取得する必要があることに注意してください

よろしくお願いします。必ずベストアンサーを選ばせていただきます。

4

1 に答える 1

1

オートコンプリート ウィジェットには、ユーザーが項目を選択したときに発生する選択イベントがあります。これを使用して、ユーザーが最初のオートコンプリート ソースで選択した内容に基づいて、2 番目のオートコンプリート ソースをフィルター処理できます。

簡単な例を次に示します: http://jsfiddle.net/B5fWc/8/ ...

$("#tags").autocomplete({
        source: availableTags, 
        select: function(event, ui) {
            $("#books").autocomplete({
                source: filter(availableBooks, ui.item.value)
            });
        }
    });

古いバージョンのオートコンプリートを使用していますか? 現在のバージョンには extraParams は存在しないと思います。

あなたがどのようにそのq=toy役割を果たしているのかを正確にフォローしているわけではありませんが、このようなアプローチはあなたが望むことをすることができると思います.

$("#PageContent_Make_SearchBox").autocomplete({
    source: "/WebHandlers/AutoComplete.ashx?field=Make",
    select: function(event, ui) {
        $("#PageContent_Model_SearchBox").autocomplete({
            source: "/WebHandlers/AutoComplete.ashx?field=Model&Make=" + ui.item.value
        });
    }
});

次に、C# 側では、"Make" クエリ文字列パラメーターから Make 用に選択した値を取得する必要があります。

于 2013-03-26T02:11:48.360 に答える