1

テキスト ボックスがあり、これに AJAX AutocompleteExtender を追加しました。コードを以下に示します。

そして、私が追加したCSファイルファイルです

[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
    public static string[] GetCompletionList(string prefixText, int count, string contextKey)
    {
        string connString = ConfigurationManager.ConnectionStrings["Station"].ToString();

        string selectString = "SELECT *from Station";

        List<String> CustList = new List<string>(count);
        using (SqlConnection sqlConn = new SqlConnection(connString))
        {
            sqlConn.Open();

            using (SqlCommand sqlCmd = new SqlCommand(selectString, sqlConn))
            {
                SqlDataReader reader = sqlCmd.ExecuteReader();
                while (reader.Read())
                    CustList.Add(reader["DBRT"].ToString());//DBRT is the Column name

            }
        }
        return (CustList.ToArray());
    }

コードを実行して入力すると、入力中に何も表示されません。コードの何が問題なのですか..

4

1 に答える 1

0

Webサービスを使用しない場合、これは私が行った方法です。必要に応じて、Webサービスも使用できます。文字列配列を復元する代わりに、ジェネリックリストを返します。

Aspxファイル内

私のシステムでは、AjaxコントロールのタグPerfixはaspから始まります。

<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods = "true">
</asp:ScriptManager>

<asp:TextBox ID="StationSearchTxtBox" runat="server"></asp:TextBox>
<asp:AutoCompleteExtender ServiceMethod="GetCompletionList"
    MinimumPrefixLength="2"
    CompletionInterval="100" EnableCaching="false" CompletionSetCount="10"
    TargetControlID="StationSearchTxtBox"
    ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
</asp:AutoCompleteExtender>

CSファイル内

[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]

public static List<string> GetCompletionList(string prefixText, int count)
    {

using (SqlConnection conn = new SqlConnection())
    {
       string connString =    ConfigurationManager.ConnectionStrings   ["Station"].ToString();

        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "select StationName from Stations where " +
            "StationName like @SearchStation + '%'";
            cmd.Parameters.AddWithValue("@SearchStation", prefixText);
            cmd.Connection = conn;
            conn.Open();
            List<string> stations= new List<string>();
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    customers.Add(sdr["StationName"].ToString());
                }
            }
            conn.Close();
            return stations;
        }
    }

このコードが問題を解決する方法を提供することを完全に願っています。

于 2012-06-23T01:16:59.057 に答える