我想在我的頁面中使用ASP.NET自動填充。我使用內部對象來加載數據,並且應該使用實例頁面字段值的參數來查詢自動完成。因爲我不能在靜態自動填充擴展方法中使用實例字段,所以我找到了一個sample of code,它可以用來實現我的目標。在代碼後面動態設置ASP.NET自動填充擴展器contextKey
我在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);
}
}
但是當我運行我的網頁和靜態網頁的方法應返回字符串數組設置斷點,我發現contextKey爲空。
[WebMethod]
[ScriptMethod]
public static string[] GetOrderOrStockNumbers(string prefixText,int count, string contextKey)
{
string[] returnStrings = new string[] {"1","2"};
return returnStrings;
}
非常感謝您的任何有用的答案,
魯道夫。