2013-05-31 32 views
0

場景:我有一個ASP.Net 2.0應用程序,我需要添加功能。我需要遍歷gridview的項目並將它們與另一個gridview進行比較,如果它們存在於另一個gridview中,我必須彈出確認消息來增加數量。我不能找到很多ASP 2.0,所以我決定用戶隱藏的ASP領域來存儲我正在處理,並基於註冊客戶端腳本來改變隱藏的字段值,然後模擬回發(我試過_doPostBack())。所以現在發生什麼是我試圖訪問asp按鈕來模擬點擊,但JavaScript每次都得到一個空實例。請指教。 (對於測試中,我試圖提醒按鈕實例,其中返回null)通過JavaScript訪問ASP 2.0控件返回所有控件的空值

ClientScript.RegisterStartupScript(GetType(String), "ConfirmationScript", "if (confirm('This item already exists, Increment the qty?') == true) {alert(document.getElementById('<%=btnAddSpecificLine.ClientID%>'));}", True) 
+1

該字符串將被直接放在頁面上。到那時,沒有什麼可以評估ASP代碼'<%= btnAddSpecificLine.ClientID%>'。我相信你必須用'btnAddSpecificLine.ClientID'連接這個腳本字符串,而不是試着用'<%= %>' – Ian

+0

來評估它。在這種情況下,它似乎返回實際的<%= btnAddSpecificLine.ClientID%>,所以它不能解析服務器控制的clientid,因爲它應該 –

回答

2

試試你的測試是這樣的:

ClientScript.RegisterStartupScript(GetType(String), "ConfirmationScript", "if (confirm('This item already exists, Increment the qty?') == true) {alert(document.getElementById('" & btnAddSpecificLine.ClientID & "'));}", True) 

既然你生成這個代碼的服務器端 - 直接通過客戶端ID

+0

你是男人!謝謝,驚人的是,人們有時會錯過這樣的明顯。 –

+0

非常奇怪,雖然clientid的保持與html中指定的完全相同......會認爲自從它的服務器控件以來它們會發生變化。 –

+0

如果您的控件託管在某種類型的容器中,則它會發生變化 - 然後該id將變爲容器標識+控件標識的組合標識。否則它仍然是一樣的,但使用客戶端ID總是一個好主意 –

相關問題