我發現有時您想要做的最簡單的事情幾乎不可能爲答案提供資金。我在Visual Studio 2005中編寫了ASP.NET V2中的ASPX頁面。ASPX頁面有一個後臺代碼ASXP.VB頁面,並與.master文件關聯。我有兩個按鈕[Button_Process],最終會調用一個將從SQL表中提取數據的程序 - 這裏沒有問題。 [Button_Process]也會調用一個持續7秒的javascript定時器(足夠的時間來進行提取)。我們正在做定時延遲,所以會出現一個可愛的小圖片,並使得使用該頁面的人認爲系統正在工作,而不是雙擊按鈕 - 我知道還有其他方法可以做到這一點,但這是我們知道的方法) 。這裏再次沒有問題。在點擊[Button_Process]按鈕7秒後,用aleart測試會傳遞一條消息。到目前爲止,世界上一切都很好。Java Timer在主文件的ASP.NET 2.0頁面上使用
我有第二個按鈕,[Button_PM_Upload],在此期間隱藏。它最終會調用一個按鈕單擊的程序,以從前一個按鈕單擊收集信息,將其與第二個SQL表中的數據進行比較並更新第二個SQL表。我想要做的就是在七秒鐘之後讓第二個按鈕可見。我非常簡單的任務,但我在找到解決方案時遇到問題。
在head標籤之間的母版頁是這樣的計時器代碼工作得非常好:
<script type="text/javascript">
<!--
var secs
var timerID = null
var timerRunning = false
var delay = 1000
function InitializeTimer()
{
// Set the length of the timer, in seconds
secs = 7
StopTheClock()
StartTheTimer()
}
function StopTheClock()
{
if(timerRunning)
clearTimeout(timerID)
timerRunning = false
}
function StartTheTimer()
{
if (secs==0)
{
StopTheClock()
// Here's where you put something useful that's
// supposed to happen after the allotted time.
// For example, you could display a message:
alert("The timer is working properly")
//document.getElementsByName ("Button_PM_Upload").style.display=
"block";
}
else
{
self.status = secs
secs = secs - 1
timerRunning = true
timerID = self.setTimeout("StartTheTimer()", delay)
}
}
//-->
</script>
在後面的代碼頁ASPX.VB是這個代碼該按鈕點擊它工作得很好過:
Protected Sub Button_Process_OnClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button_Process.Click
'This code fires of the timer in the master file
ClientScript.RegisterStartupScript(GetType(Page), "Startup", "<script type=text/javascript>InitializeTimer()</script>")
End Sub
經過幾天的閱讀和研究,我發現計時器是客戶端,後面的代碼是Serverside,「從來沒有兩個人說話」。 NET上的文章說,爲了讓第二個按鈕可以通過javascript「抓住」,我必須在定時器之前最初使其不可見(可見= false),這是服務器端,並且不提供客戶端按鈕,我需要調整顯示命令。該代碼位於該按鈕的ASPX頁面上,看起來像這樣的源代碼:
<asp:Button ID="Button_PM_Upload" runat="server" Style="display: none; left: 632px;
position: absolute; top: 252px; z-index: 104;" Text="Upload to PartsMaster"
ToolTip="Change PR codes and Descriptions" Width="147px" />
正如我的哥哥在使用我們的青年說, - 「一切都在這一點上沒說」 。文章的下一部分在作者之間有所不同。但是,所有這些都有一個密切的解決方案,但不知道在哪裏放置代碼。我一直把它放在master頁面的Javascript中的alert中。下面是我得到:
document.getElementsByName("Button_PM_Upload").style.display="block";
給我 - 按鈕保持隱藏
document.getElementsByName("Button_PM_Upload").style.display='block';
給我 - 按鈕保持隱藏
document.getElementsByName('Button_PM_Upload').style.display='block';
給我 - 按鈕保持隱藏
document.getElementsByName('Button_PM_Upload').style.display="block";
give me-bu tton保持隱藏狀態
每當我用內聯塊(一個建議)替換塊時,所有四個代碼行都給了我相同的結果(無)。每當我用塊代替可見(另一個建議)時,所有四條代碼行都會給出相同的結果。每當我用inline替換塊(另一個建議),所有四個代碼行都會給出相同的結果。
我確實發現了這個例子,你把服務器代碼放在 - (「<%= Button_PM_Upload%>」) - ,但我得到的是一個錯誤(不管我如何安排它),讀取此:BC30451 :名稱'Button_PM_Upload'未被聲明。
我的網站在項目的根目錄上有母版頁。在根上還有一個名爲[PSC_Tools]的文件夾。我的ASPX和ASPX.VB頁面在該文件夾中,我想知道如果它可能是一個簡單的路徑問題。不管它是什麼,我都是停滯不前 - 有時候最簡單的事情是最難找到的代碼。 Ajax工具不存在問題。該網站的開發沒有它們,如果導入,它們會干擾運行該網站的配置文件。
我是否缺少代碼?我沒有輸入什麼東西?這是否與配置或css文件有關?我很茫然。我遇到了你的網站,可以感受到從我的顯示器上滲出的智慧和經驗。希望我遵循提出問題的規則,並非常感謝您的任何幫助。作爲幫助,請您告訴我確切的代碼應該在哪裏和在哪個頁面上(ASPX,ASXP.VB,.master)。
有一個偉大的週末
明白了。下面是在ASPX文件的源代碼中放置的最終Div標記代碼中的按鈕:
接下來,這裏是在主文件中找到的javascript的最終代碼:document.getElementById(「Div1」)。style .visibility = 「可見」;奇蹟般有效。謝謝你sooooooo了! – 2010-10-18 15:53:00
請注意可見性:它在某些主流瀏覽器中不受支持。使用「display:none;」代替。並upvote我的答案! ;-) – usr 2010-10-19 17:20:17