簡體   English   中英

在帶有主文件的ASP.NET 2.0頁面上使用Java Timer

[英]Java Timer use on an ASP.NET 2.0 page with Master File

我發現有時您想做的最簡單的事情幾乎不可能為答案提供資金。 我在Visual Studio 2005中編程的ASP.NET V2中有一個ASPX頁。ASPX頁具有背后的代碼ASXP.VB頁,並綁定到.master文件。 我有兩個按鈕[Button_Process],它們最終將調用一個程序,該程序將從SQL表中提取數據-在這里沒有問題。 [Button_Process]還將調用一個JavaScript計時器,該計時器持續7秒(提取足夠的時間)。 我們正在執行計時器延遲,因此會出現一個可愛的小圖形,並使使用該頁面的人認為系統正在運行,而不是雙擊按鈕-我知道還有其他方法可以這樣做,但這是我們知道的方法) 。 同樣,這里沒有問題。 單擊[Button_Process]按鈕七秒鍾后,用aleart測試會發送一條消息。 到目前為止,世界上一切都很好。

我還有第二個按鈕[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

經過幾天的閱讀和研究,我發現計時器是在客戶端,后面的代碼是在服務器端,並且“兩者永遠不要說話”。 NET上的文章說,要使第二個按鈕可被javascript“抓取”,我必須說(visible = false)使其在timer之前不可見,該定時器在服務器端,並且不會在客戶端傳遞按鈕,我需要調整顯示命令。 該代碼位於該按鈕的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" />

正如我的哥哥在我們青年時代所說的那樣:“在這一點上,一切都是笨拙的”。 文章說的下一部分在作者之間有所不同。 但是,所有人都有一個嚴密的解決方案,但不知道將代碼放置在何處。 我一直將其放在母版頁Javascript中的警報下。 這是我得到的:

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";

給我-按鈕保持隱藏

每當我用塊代替內聯(一個建議)時,所有四個代碼行都給我相同的結果(什么都沒有)。 每當我用block代替可見的(另一個建議)時,所有四個代碼行都給我相同的結果。 每當我用內聯替換塊(另一個建議)時,所有四個代碼行都給我相同的結果。

我確實找到了將服務器代碼放入-(“ <%= Button_PM_Upload%>”)-的示例,但我得到的只是一個錯誤(無論如何安排),其內容如下:BC30451:名稱為'Button_PM_Upload '未聲明。

我的網站在項目的根目錄上具有母版頁。 根目錄上還有一個名為[PSC_Tools]的文件夾。 我的ASPX和ASPX.VB頁面位於該文件夾中,我想知道它是否可能是一個簡單的路徑問題。 無論是什么,我都停滯不前-有時最簡單的事情是最難找到的代碼。 Ajax工具是不可能的。 該站點是在沒有它們的情況下開發的,如果將其導入,它們會干擾運行該站點的配置文件。

我在某處缺少代碼嗎? 我不導入東西嗎? 這與config或css文件有關嗎? 我很茫然。 我碰到了您的站點,可能會感覺到收集到的智力的熱度以及從監視器中滲出的經驗。 希望我遵守提出問題的規則,並非常感謝您能提供的任何幫助。 作為幫助,您可以讓我確切知道代碼應該在什么地方以及在什么頁面(ASPX,ASXP.VB,.master)上。

周末愉快

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

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

然后隱藏並顯示div。

如果要禁用該按鈕,請使用jQuery,如下所示:

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

訣竅是通過包裝元素引用按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM