Постбэк кнопки динамического создания не всегда выполняется
У меня есть страница 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;";