1

AJAX CT オートコンプリートが機能しません。問題は、テキストボックスに書き始めても何も起こらないことです。私が経験した最初の問題は、オートコンプリート ページ メソッドを追加しようとしたときに、「ページ メソッド "GetCompletionList" を作成できません...」というエラーが発生したことでした。その後、手動で作成しようとしましたが、それでも何も起こりません。

AdministracijaOsoba.aspx コードは次のとおりです。

<asp:TextBox ID="txtOsoba" runat="server"></asp:TextBox><asp:AutoCompleteExtender
                    ID="AutoCompleteExtender1" runat="server" ScriptPath="" 
                    ServiceMethod="GetCompletionList" ServicePath="AdministracijaOsoba.aspx.cs" 
                    TargetControlID="txtOsoba" UseContextKey="True">
                </asp:AutoCompleteExtender>

AdministracijaOsoba.aspx.cs コードは次のとおりです。

public static string[] GetCompletionList(string prefixText, int count, string contextKey)
    {
        PravosudnaAkademijaEntities db = new PravosudnaAkademijaEntities();

        var osoba = from o in db.osobas
                    orderby o.osoba_prezime
                    select new { o.osoba_id, person = o.osoba_prezime + " " + o.osoba_ime };

        string[] main = new string[0];

        foreach (var o in osoba)
        {
            if (o.person.StartsWith(prefixText))
            {
                Array.Resize(ref main, main.Length + 1);
                main[main.Length - 1] = o.person.ToString();

                if (main.Length == 15)
                {
                    break;
                }
            }
        }

        Array.Sort(main);
        return main;
    }

LINQ to Entities を使用していることに注意してください。これに関する助けをいただければ幸いです。

よろしく!

4

9 に答える 9

2

コードビハインドは次のようになります

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static string[] GetCompletionList prefixText, int count, string contextKey)
{....}

また、pagescriptmethod を使用している場合は、ajax エクステンダーに servicepath 属性を指定する必要はありません。

于 2011-06-12T18:55:22.003 に答える
1

私も同じ問題を抱えてきました。私はこれが少し遅いことを知っていますが、遅刻しないよりはましです...

これが最終的に私のために機能したセットアップです(IDと名前が配置されています):

コード ビハインド ( aspx.cs ):

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

コード ( .aspx ):

    <asp:TextBox ID="txtOsoba" runat="server"></asp:TextBox>
    <asp:AutoCompleteExtender ID="AutoCompleteExtender1" 
        runat="server"
        ServiceMethod="GetCompletionList"
        TargetControlID="txtOsoba"  
        UseContextKey="True">
    </asp:AutoCompleteExtender>

ご覧のとおり、ScriptPath および ServicePath プロパティを設定する必要はありません。これらのプロパティは...

エクステンダーが単語\文の補完を取得する Web サービスへのパス。これが提供されていない場合、サービス メソッドはページ メソッドにする必要があります

これについては、 AutoComplete リファレンス ページで説明されています。コード ビハインドで GetCompletionList() メソッドが定義されています。これは現在、「ページ メソッド」としての資格があると想定しています。そのため、services.cs などの別の場所にメソッドがある場合にのみ Path プロパティを使用するようです。

于 2011-06-22T20:58:05.260 に答える
1

あなたのコードはほぼ正しいです。唯一の問題は、サービス パスの末尾が .aspx.cs ではなく、.aspx のみであることです。エクステンダーがメソッドと同じページにある場合は、servicepath を省略します

于 2011-04-01T07:27:52.143 に答える
1

宣言を次のように変更します。

<asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
    ServiceMethod="GetCompletionList" 
    ServicePath="AdministracijaOsoba.aspx/GetCompletionList" 
    TargetControlID="txtOsoba" UseContextKey="True">

これを AdministracijaOsoba.aspx.cs コードに追加します。

[WebMethod]
public static string[] GetCompletionList(string prefixText, int count, string contextKey)
{
  ...
}
于 2011-03-06T02:41:48.183 に答える
1

私のaspxページにあるものは次のとおりです。

<asp:AutoCompleteExtender ID="tbSearchName_AutoCompleteExtender" runat="server" 
  DelimiterCharacters="" Enabled="True" ServicePath="" 
  TargetControlID="tbSearchName" ServiceMethod="GetCompletionList" 
  UseContextKey="True" MinimumPrefixLength="2">
</asp:AutoCompleteExtender>

私のコードビハインドページには次のものがあります:

[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static string[] GetCompletionList(string prefixText, int count, string contextKey)
{
  ArrayList testList = new ArrayList();
  ...
  return (string[])testList.ToArray(typeof(string));
}
于 2011-03-16T05:07:43.557 に答える
0

TextBox の auto-postback プロパティを TRUE に設定します

于 2014-03-11T06:50:56.063 に答える
0

staticメソッド宣言のキーワードを削除してください。

于 2011-05-07T10:08:25.343 に答える
0

おそらく、 AutoCompleteExtenderのMinimumPrefixLengthパラメータを指定していない可能性があります。

于 2012-04-13T10:53:00.357 に答える