2010-10-15 33 views
1

我發現有時您想要做的最簡單的事情幾乎不可能爲答案提供資金。我在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)。

有一個偉大的週末

回答

0

有一個簡單的解決方法:將在一個div按鈕:

<div id="x"><asp:Button/></div> 

然後隱藏和顯示DIV。

如果你想禁用按鈕,使用jQuery這樣的:

$('#x button').attr('disabled', 'disabled'); 

訣竅是通過纏繞元件引用按鈕。

+1

明白了。下面是在ASPX文件的源代碼中放置的最終Div標記代碼中的按鈕:

2010-10-18 15:50:22

+0

接下來,這裏是在主文件中找到的javascript的最終代碼:document.getElementById(「Div1」)。style .visibility = 「可見」;奇蹟般有效。謝謝你sooooooo了! – 2010-10-18 15:53:00

+0

請注意可見性:它在某些主流瀏覽器中不受支持。使用「display:none;」代替。並upvote我的答案! ;-) – usr 2010-10-19 17:20:17

相關問題