У меня есть автозаполнение расширителя в текстовом поле, которое показывает категории элементов.Мой расширитель работает нормально, когда я открываю свою страницу.Но проблема возникает, когда я открываю свою страницу и перестаю работать над ней, и через некоторое время, например (от 15 до 25 минут), я использую этот расширитель, тогда он не работает и не загружает мой веб-сервис для загрузки данных.Я думаю, что это какая-то проблема с сессией или кешем, но я не нашел ни одной подсказки, где на самом деле моя проблема в моем коде.
Ниже приведен мой код автозаполнения и мой код службы asmx:
<ajaxToolkit:AutoCompleteExtender
BehaviorID="AutoCompleteEx"
ID="aceItemCategory"
runat="server"
ServiceMethod="GetItemCategoryListData"
ServicePath="~/Services/NavigationService.asmx"
TargetControlID="txtItemCategory"
MinimumPrefixLength="1"
UseContextKey="false"
CompletionInterval="0"
EnableCaching="true"
CompletionSetCount="30"
FirstRowSelected="true"
CompletionListCssClass="AutoExtender"
CompletionListItemCssClass="AutoExtenderList"
CompletionListHighlightedItemCssClass="AutoExtenderHighlight"
CompletionListElementID="acItemCategoryList"
OnClientItemSelected="ItemCategorySelected">
</ajaxToolkit:AutoCompleteExtender>
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod(EnableSession = true)]
public string[] GetItemCategoryListData(string prefixText, int count)
{
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("Name", typeof(String));
dt.Columns.Add(dc);
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
//DataTable dt = null;
DataView dv = null;
List<string> suggestions = new List<string>();
dt = (DataTable)HttpContext.Current.Session["GetItemCategoryData"];
if ((dt != null))
{
dv = dt.Copy().DefaultView;
dv.RowFilter = "Name like '%" + prefixText + "%' ";
dv.Sort = "Name Asc";
string c = prefixText;
double Num = 0;
bool isNum = double.TryParse(c, out Num);
int indx = 0;
foreach (DataRowView dvr in dv)
{
if (indx <= count)
{
suggestions.Add(AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(dvr["Name"].ToString().Trim(), dvr["Category_Code"].ToString().Trim()));
indx += 1;
}
}
}
return suggestions.ToArray();
}