0

Asp.net (C#) で単純な ajax オートコンプリート コードを作成しました。

これがコードです

ASPX

<asp:TextBox ID="TextBox1" runat="server" Height="21px" Width="80px"></asp:TextBox>
<asp:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server" MinimumPrefixLength="1" ServiceMethod="GetCompletionList" TargetControlID="TextBox1" UseContextKey="True"></asp:AutoCompleteExtender>

コードビハインド

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

2 に答える 2

0

return 部分のコードを変更します

return Custlist; 
于 2012-06-26T03:41:31.277 に答える
0

メソッドに次の 2 つの属性があることを確認します。

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public string[] GetCompletionList................{}

編集: あなたのコードで気付いたことがいくつかあります: string selectString = "SELECT *from Station";間違っているはずですSELECT * from(* と from の間のスペースがありません)。

また、メソッドが受け取るプレフィックス文字列値で始まる名前のみを選択する必要があります。メソッドの署名は次のとおりです。

[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]  
public static string[] GetCompletionList(string prefixText, int count, string contextKey) {

ここで、prefixText は、データベースで検索すると想定するものです。選択クエリは次のようになります。

string selectString = "SELECT * from Station where @Name like";

コマンドの使用を定義した後、cmd.Parameters.AddWithValue(NAME, prefixText + "%");

これにより、テキストボックスから入力された値に基づいてテーブルから値が選択されます。以下に似ています: Select * from station where Name like 'some%';

また、 Topキーワードで結果を制限することをお勧めします。テーブルに含まれる行が多すぎて、オートコンプリート エクステンダーが期待どおりに機能しない可能性があるためです。

于 2012-06-26T04:13:19.170 に答える