Расширение автозаполнения ajax перестает работать через некоторое время - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть автозаполнение расширителя в текстовом поле, которое показывает категории элементов.Мой расширитель работает нормально, когда я открываю свою страницу.Но проблема возникает, когда я открываю свою страницу и перестаю работать над ней, и через некоторое время, например (от 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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...