Проблема: выполнение фильтрации в page load при нажатии на кнопку изменить, а не фильтровать

Есть форма:

введите сюда описание изображения

На ней есть текстбоксы, кнопка фильтрации и кнопки sqldatasource edittext и т.д.

Проблема: при выполнение алгоритма: зайти на форму нажать кнопку изменить, откроется для редакции окно под номером 3, скопировать любой другой текст из этой колонки, вставить его в поле текста под номером 1, дальше нажать на кнопку изменить(любую на странице) в данном случае под номером 2. Выполняется не метод EditText(открывается строка для редактирования) вместо этого выполняется фильтрация, хотя кнопка фильтровать не нажата. Происходит это из-за постоянного вызова метода page_Load перед методом редактирования в методе page_Load выполняется условие фильтрации Метод:

protected void Page_Load(object sender, EventArgs e)
{
    // Определяем роль текущего пользователя
    this.roleName = CommonUtilities.GetRoleName(this.Session["UserName"] as String) ?? RoleNames.Operator;
    // Устанавливаем выражение фильтрации данных
    string filterExpression = GetFilterExpression();
    if (!String.IsNullOrWhiteSpace(filterExpression))
    {
        this.NameplatesDataSource.SelectCommand = "SELECT [device].[id] AS deviceId, [device].[serial] AS serial, [device].[serial] AS serialNew, [device].[nameplate] AS nameplate, [device].[label] AS deviceType, [attributeNames].[attrName] FROM [device] INNER JOIN [attributeNames] ON [attributeNames].[id] = [device].[attributeId] WHERE " + filterExpression + " ORDER BY [device].[nameplate] DESC";
    }
}

Из-за того что текстбокс не пустой, то условие фильтрации выполняется и происходит фильтрация. Вопрос: могу ли я как-то в page_load в asp.net отловить, что страница сюда пришла после нажатия на кнопку изменить метод Editing:

protected void OnNameplateRowEditing(Object sender, GridViewEditEventArgs args)
{
    GridViewRow gridViewRow = CommonUtilities.EntityOfType<GridView>(sender, "sender").Rows[args.NewEditIndex];
    string serial = CommonUtilities.EntityOfType<IButtonControl>(gridViewRow.FindControl("SerialLinkButton"), "SerialLinkButton").Text;
    string nameplate = CommonUtilities.EntityOfType<ITextControl>(gridViewRow.FindControl("NameplateLabel"), "NameplateLabel").Text;
    string deviceType = CommonUtilities.EntityOfType<ITextControl>(gridViewRow.FindControl("DeviceTypeLabel"), "DeviceTypeLabel").Text;

    if (String.IsNullOrWhiteSpace(deviceType) && !String.IsNullOrWhiteSpace(serial) && String.IsNullOrWhiteSpace(nameplate))
    {
        this.DefaultDeviceType = Regex.Match(serial, @"^(?<deviceType>[\p{L}\d]+)-").Groups["deviceType"].Value;
    }
    else
    {
        this.DefaultDeviceType = null;
    }
}

И вообще может есть идее как это можно избежать? Есть вариант наложить js с блокировкой и обнулением поля фильтрации при нажатии кнопки изменить, но накладывать js не очень хочу. Надеюсь получится силами asp.net


Ответы (0 шт):