Ошибка AjaxControlToolkit TabContainer при программном изменении вкладок

Я использую последнюю версию Ajax Control Toolkit v15.1.4.0 (декабрь 2015 г.)

На нашем веб-сайте у нас есть форма, в которой в зависимости от значения элемента в строке запроса мы переводим пользователя на другую вкладку. Этот код находится в page_load кода файла. Код выглядит следующим образом:

  tabsHLAAntibodiesResultPage.ActiveTab = tabsHLAAntibodiesResultPage.Tabs[2];
  hfCurrentTab.Value = "2";

Этот код работает правильно, и пользователь попадает на соответствующую вкладку.

Мы хотели представить новую функцию в другой форме, при которой пользователь попадал бы в форму результатов тестирования, а затем возвращался в список выполненных тестов. Чтобы вернуть пользователя на вкладку предпринятых тестов, нам необходимо изменить вкладку, на которую пользователь обычно попадал бы при загрузке формы.

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

if (Request.Params["From"] != null && Request.Params["From"] == "TestResultPage")
{
        tabsPatientDetailsPage.ActiveTab = tabsPatientDetailsPage.Tabs[4];
        hfCurrentTab.Value = "4";
}

Когда пользователь возвращается к форме со страницы результатов теста, мы получаем следующую ошибку: - Сообщение об ошибке после выполнения кода При просмотре файла scriptresource.axd ошибка возникает в следующем блоке (в частности, это функция ._validateParams): - `

var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler, autoRemove) {
    /// <summary locid="M:J#Sys.UI.DomEvent.addHandler" />
    /// <param name="element"></param>
    /// <param name="eventName" type="String"></param>
    /// <param name="handler" type="Function"></param>
    /// <param name="autoRemove" type="Boolean" optional="true"></param>
    var e = Function._validateParams(arguments, [
        {name: "element"},
        {name: "eventName", type: String},
        {name: "handler", type: Function},
        {name: "autoRemove", type: Boolean, optional: true}
    ]);
    if (e) throw e;`

Это параметр элемента, который имеет значение NULL. Название события - «Click».

Если блок кода, основанный на Request.Params ["From"] (как указано выше), закомментирован, форма успешно загружается на 1-й вкладке, но мы хотим, чтобы она загрузилась на 5-й!

Я просмотрел код двух форм (которые используют эту технику для программного изменения активной вкладки), но не вижу ничего другого, что могло бы помешать успешному изменению вкладки в нашем новом коде.

Может ли кто-нибудь пролить свет на то, где может быть проблема?


person Neil    schedule 18.02.2016    source источник


Ответы (1)


Подумал, что обновлю это, чтобы кто-нибудь знал, что мы нашли способ обойти проблему с помощью javascript. Мы удалили утверждение:

tabsPatientDetailsPage.ActiveTab = tabsPatientDetailsPage.Tabs[4];

из метода Page_Load в коде позади, а затем добавил следующее к методу pageLoad javascript: -

if (hfCurrentTab.value == "4") { 
  var ctrl = $find('ctl00_ContentPlaceHolder1_tabsPatientDetailsPage'); 
  ctrl.set_activeTab(ctrl.get_tabs()[4]);
}

Это не самый элегантный способ, но он работает!

person Neil    schedule 26.02.2016