0

Webサービスを使用して、C#.netでJQueryオートコンプリートを機能させることができました。

aspコードは次のとおりです。

    <div class="row">
    <div class="span4">
        <h3>
            Manage Season</h3>
    </div>
</div>
<div class="row">
    <div class="span2">
        <p>
            <label class="control-label" for="TeamName">
                Team Name:</label></p>
    </div>
    <div class="span3">
        <asp:TextBox ID="TeamNameTextBox" runat="server" CssClass="searchinput"></asp:TextBox>
        <asp:Button ID="AddTeamButton" CssClass="btn btn-primary" runat="server" Text="Add"
            OnClick="AddTeamButton_Click" />
    </div>
<script type="text/javascript">
    $(document).ready(function () {
        $(".searchinput").autocomplete({
            source: function (request, response) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "PredictiveSearch.asmx/GetAllPredictions",
                    data: "{'keywordStartsWith':'" + request.term + "'}",
                    dataType: "json",
                    async: true,
                    success: function (data) {
                        response(data.d);

                    },
                    error: function (result) {
                        alert("Due to unexpected errors we were unable to load data");
                    }
                });
            },
            minLength: 1
        });
    });
</script>

そして、C# Web サービス:

    [System.Web.Script.Services.ScriptService]
public class PredictiveSearch : System.Web.Services.WebService
{

    [WebMethod]
    public IList<string> GetAllPredictions(string keywordStartsWith)
    {
        //TODO: implement real search here!

        SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["RaiseFantasyLeagueConnectionString"].ConnectionString);
        SqlCommand cmd = new SqlCommand("[dbo].[findEnglishTeams]", conn);
        cmd.CommandType = CommandType.StoredProcedure;

        string searchTerm = keywordStartsWith;
        SqlParameter searchTermParam = new SqlParameter("@searchterm", searchTerm);

        cmd.Parameters.Add(searchTermParam);

        IList<string> output = new List<string>();

        conn.Open();
        SqlDataReader dReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        if (dReader.HasRows)
        {
            while (dReader.Read())
            {
                output.Add(dReader["englishTeamName"].ToString());
            }
            return output;
        }
        else
        {
            return output; 
        }
    }
}

ドロップダウンに入力している値の ID を取得する必要があります。これはどのように可能ですか?

4

2 に答える 2

0

このようなものがあなたのニーズにより良く役立つことを願っています

于 2013-03-18T18:53:07.600 に答える
0

Ajax リクエストを使用してクライアント側でこれを設定しているため、次のいずれかを行う必要があります。

  1. 選択した値を html input type=hidden 要素に書き込み、フォームがポストバックされたときにサーバー側で読み取ることで取得します。input type=hidden追加して、要素をサーバー側コントロールにすることを忘れないでくださいrunat="server"
  2. 選択した値を別の Ajax リクエストを介して送信します。
  3. リストボックスの名前をキーとして Request.Params コレクションを使用して、選択した値を読み取ります。何かのようなもの:

    var selectedValues = Request.Params["select_box_name"];
    

Ajaxを介して値を設定しているListBox.SelectedValueため、値が見つからないため、単純に使用することはできません。ViewState

私はオプション3で行きます...

于 2013-03-18T18:15:42.590 に答える