Проблема: выполнение фильтрации в 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
