ページでASP.NETオートコンプリートを使用したい。データの読み込みに内部オブジェクトを使用しています。オートコンプリートは、インスタンスページフィールド値であるパラメーターを使用してクエリする必要があります。静的オートコンプリートエクステンダーメソッドでインスタンスフィールドを使用できないため、目標を達成するために使用できるコードのサンプルを見つけました。
asp.netページにテキストボックスとオートコンプリートエクステンダーがあります。
<asp:TextBox ID="PurchaseOrderItemsSearchTextBox" runat="server" EnableViewState="False"
                            SkinID="SalesReturnTextBox" AutoCompleteType="Disabled" 
                            AutoPostBack="True" OnTextChanged="PurchaseOrderItemsSearchTextBoxTextChanged" 
                            onload="PurchaseOrderItemsSearchTextBoxLoad" />
<ajax:AutoCompleteExtender runat="server" TargetControlID="PurchaseOrderItemsSearchTextBox" ID="OrderOrStockNumberExtender"
                            ServiceMethod="GetOrderOrStockNumbers" MinimumPrefixLength="2" CompletionInterval="1000" UseContextKey="True"/>
PurchaseOrderItemsSearchTextBoxLoadメソッドで、上記の例に従ってjavascriptを介してコンテキストキーを動的に設定したいと思います。
protected void PurchaseOrderItemsSearchTextBoxLoad(object sender, EventArgs e)
    {
        var textBox = sender as TextBox;
        if (textBox!=null)
        {                
            string sapCode = Customer.Company.SapCode;
            const string PURCHASE_ORGANIZATION = PURCHASE_ORGANIZATION_HP;
            string purchaseGroup = string.Empty;
            string firstDateTime = FirstDateTextBox.Text;
            const string SEPARATOR = "#";
            var contextStrings = new[]{sapCode,PURCHASE_ORGANIZATION,purchaseGroup,firstDateTime};
            string context =string.Join(SEPARATOR, contextStrings);
            const string ON_KEY_UP = "onkeyup";
            string attributevalue = "$find('" + OrderOrStockNumberExtender.ClientID + "').set_contextKey(" + context +
                                    ");";
            textBox.Attributes.Add(ON_KEY_UP, attributevalue);
        }
    }
しかし、ページを実行し、文字列配列を返す静的Webメソッドにブレークポイントを設定すると、contextKeyがnullであることがわかります。
[WebMethod]
[ScriptMethod]
public static string[] GetOrderOrStockNumbers(string prefixText,int count, string contextKey)
{            
    string[] returnStrings = new string[] {"1","2"};
    return returnStrings;
}
有益な回答をありがとうございました、
ルドルフ。