2017-01-11 13 views
0

У меня есть страница 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 активирован.

ответ

0

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

detailsButton.OnClientClick = "windows.open(' new_page.aspx ', '_self'); return false;";