2017-01-11 31 views
0

我有一個ASP頁面,其中包含始終不同的行,從MSSQL DB動態加載。在表的每一行中,我創建了一個名爲Details的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); 

的目的是當按下一排一個鍵將客戶端重定向朝回傳網址。回傳網址是爲每個按鈕動態創建的,將每個按鈕與用戶選擇顯示細節的項目ID關聯起來。

雖然這對我的開發環境(即運行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,並且回發被激活。

回答

0

我解決了我的問題,使用JavaScript重定向關聯onClientClick事件並返回false在同一事件。這樣可以防止調用服務器,並且客戶端不必刷新舊頁面即可重定向到新頁面。

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