2012-11-22 75 views
6

我正在開發一個asp.net應用程序,我需要調用後面的代碼確認對話框。之後,我需要獲得用戶的點擊(如果他點擊「確定」或「取消」)。調用後面的代碼確認對話框,並獲得選擇的選項

如果他點擊該對話框的確定​​按鈕,我必須繼續運行在那裏我電話對話之前停止的代碼。

爲了解決這個問題,我還以爲在放的ASPX式按鈕的輸入,並設置它的風格可見性:隱藏。所以,當用戶點擊確定按鈕時,程序將調用這個隱藏的按鈕,該按鈕調用將繼續停止作業的方法。

我會發布我的代碼,我希望它可以幫助。

下面的代碼在我的代碼後面,它調用確認對話框。

System.Web.UI. 
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage + "')){document.getElementById(\'<%=btnSave.ClientID%>\').click();}", true); 

下面的代碼是在我的aspx,它的「隱藏」按鈕。

<input style="visibility:hidden;" id="btnSave" runat="server" onclick="btnSave_Click"/> 

我不知道爲什麼不工作。單擊確認對話框的確定​​按鈕後,我收到的錯誤如下:Erro em tempo deexecuçãodo Microsoft JScript:'document.getElementByID(...)'énulo ounãoéum objeto

我來自巴西,所以錯誤是葡萄牙語,翻譯成英文是這樣的:

「在Microsoft JScript'document.getElementByID(...)'上發生運行時錯誤爲空或者不是對象」

我給看看頁面的HTML代碼和我注意到,該按鈕是不存在的。

也許是因爲我使用的是UpdatePanel,但是當我刪除它(僅用於測試,我必須使用更新面板)時,會顯示相同的錯誤,並且此時該按鈕位於頁面的html代碼中。

回答

0

我解決更換部分

document.getElementById(\'<%=btnSave.ClientID%>\').click(); 

問題通過

$(\"#ctl00_body_btnSave\").click(); 

我還通過替換一個asp輸入元件:按鈕。

給看看我的代碼是如何在我後面的代碼現在:

System.Web.UI. 
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "__Mensagem", "if (confirm('" + CustomMessage+ "')){$(\"#" + btnSave.ClientID + "\").click();}", true); 

而且在我的aspx:

<asp:Button id="btnSave" Width="0px" Text="" runat="server" onclick="btnSave_Click"/> 

使用Widht = 「0像素」 和文本= 「」 來隱藏該按鈕不被推薦,但我使用,因爲它不會導致我的問題。建議使用隱藏的CssClass。

因此,如果用戶確認操作,則調用even btnSave_Click。

感謝您的所有答案。

+0

當您將按鈕移動到其他控件(例如佔位符)時,您將遇到同樣的問題,因爲ClientID會變得不同。我剛剛提出了實際的解決方案,請參閱我的答案以獲取更新 – Darren

+0

您是對的。我更新了上面的解決方案。仍在工作,現在如果將按鈕移動到另一個控件中,則會更安全。謝謝你的建議。 – Fernando

+0

您可以使用'ClientIDMode =「Static」'(請參閱[文檔](http://msdn.microsoft.com/zh-cn/library/system.web.ui.control.clientidmode.aspx))。 – nrodic

1

在黑暗中刺傷。

在你的代碼隱藏你有沒有設置btnSave.visible = false;?如果是這樣,這將防止該按鈕被呈現給HTML

此外,有沒有你不使用ASP任何原因:按鈕控制,而不是HTML與runat="server"混合?

最後,它可以幫助有type='button'<input....

UPDATE

問題是你想申請一個內嵌標籤 document.getElementById(\'<%=btnSave.ClientID%>\')

在你的代碼

<%=btnSave.ClientID%>做尚不存在。

當你將你的按鈕放入另一個服務器控件時,你的代碼將會破壞,因爲clientId會變得不同。

代碼改成這樣:

 document.getElementById('" + btnSave.ClientID + "') 

,它會工作,無論在哪裏,你有按鈕。

+0

嗨達倫,謝謝你的回答。我檢查了很多次,並且沒有一行代碼在我的代碼背後反駁這個按鈕。我在嘗試輸入之前嘗試使用asp:Button,兩者都不起作用並返回相同的錯誤。當我複製並粘貼到此處時,我忘記將屬性type =「button」放置在我的標記上,之前幾分鐘我嘗試刪除類型=「submit」,但也無效。我正在嘗試其他鏡頭,如果我解決了這個問題,我會在這裏發帖。再次感謝。 – Fernando

+0

我可以澄清,你說這個按鈕不會呈現當你查看源代碼? – Darren

+0

嗨,我解決了這個問題。我感謝您的幫助。我會發布解決方案 – Fernando

0

一旦你的頁面在瀏覽器中呈現,右鍵點擊它,並說「查看源代碼」。檢查HTML並嘗試找到隱藏的按鈕,如果您發現它,請在您的聲明getElementById(\'<%=btnSave.ClientID%>\')中使用其ID。如果你沒有找到你的按鈕,那麼你可能已經從你的代碼中將其可見性設置爲false,將其刪除,再次按照上面的過程,你應該沒問題。

+0

嗨,帕蒂爾,我解決了這個問題。無論如何,感謝您的幫助。我將發佈解決方案 – Fernando

相關問題