Постбэк кнопки динамического создания не всегда выполняется

У меня есть страница ASP с таблицей, содержащей всегда разные строки, динамически загружаемые из базы данных MSSQL. В каждой строке таблицы я создал Button, называемый Подробности, который динамически создается во время записи таблицы. Эта кнопка Подробности добавлена ​​со следующим кодом:

Button detailsButton = new Button();
detailsButton.Height = new Unit("18px");
detailsButton.Width = new Unit("65px");
detailsButton.Text = "Details";
detailsButton.ID = row.ItemArray[0].ToString();

detailsButton.PostBackUrl = "~\\DetailsPage.aspx?selectedSignalling=" +  detailsButton.ID;
//detailsButton.Click += detailsAgencyButton_Click;
//detailsButton.OnClientClick = "return true;";

table1cell4.Controls.Add(detailsButton);
table1row.Cells.Add(table1cell4);

Намерение состоит в том, чтобы перенаправить клиента на URL-адрес обратной передачи при нажатии одной кнопки в строке. URL-адрес обратной передачи динамически создается для каждой кнопки, привязывая к каждой из них идентификатор элемента, который пользователь выбрал бы для отображения деталей.

Хотя это отлично работает в моей среде разработки, где работает IIS 7.5, это не всегда работает в производственной среде, в которой работает IIS 6.0, и это невозможно обновить. В IIS 6.0 некоторые клиенты не замечают каких-либо проблем, в то время как другие не могут отобразить страницу сведений, но при нажатии кнопки "Сведения" URL-адрес обратной передачи не загружается, а вместо этого происходит только перезагрузка текущей страницы.

Я пытался изменить многие настройки (установите detailsButton.Click, установить OnClientClick к "return true;"), но без везения. Я только заметил, что добавление:

detailsButton.OnClientClick = "return true;"; 

инструкция, редирект тоже не работает в IIS 7.5. Так что мне кажется, что когда OnClientClick возвращает что-то (true/false), PostBack не активирован, в то время как некоторые клиенты, вероятно, не возвращают OnClientClick и PostBack активирован.

1 ответ

Я решил свою проблему с помощью перенаправления JavaScript, связанного с событием onClientClick, и вернул false в том же событии. Это препятствует тому, чтобы сервер был вызван, и клиент перенаправляет к новой странице, не обновляя старую страницу.

detailsButton.OnClientClick = "windows.open(' new_page.aspx ', '_self'); return false;";
Другие вопросы по тегам