2014-09-29 70 views
0

我有2個服務器端asp.net按鈕,我需要自動按鈕點擊。 即page_load之後,我需要點擊button1,並在頁面上顯示結果後,等待10秒鐘並點擊button2。asp.net服務器端按鈕點擊編程

我嘗試以下示例代碼

protected void Page_Load(object sender, EventArgs e) 
    { 
     Button1_Click(Button1, null); 
     Thread.Sleep(10000); 
     Button2_Click(Button2, null); 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     changeLabel.Text = "Button1"; 
    } 

    protected void Button2_Click(object sender, EventArgs e) 
    { 
     changeLabel.Text = "Button2"; 
    } 
} 

我有2個obeservations(也許是有用的):

  1. 總是Button2_Click(Button2的,NULL);事件是頁面完全加載時最新的(這是顯而易見的)。

  2. Page_Load(object sender,EventArgs e)doesnot 當以編程方式點擊按鈕時觸發atall。

任何想法如何實現解決方案。

+1

對於使用ASP按鈕的網頁來說,這看起來很奇怪。如果您想在頁面加載後等待十秒,您將需要客戶端代碼。你有沒有用JavaScript編程提交HTML表單? – 2014-09-29 08:30:10

+0

@MatthewHaugen:謝謝你的快速回復。我不知道如何做到這一點。 – 2014-09-29 08:32:54

回答

0

Button_Click是服務器事件,當從客戶端調用時,瀏覽器將相關數據發佈到服務器並請求新頁面內容,此時調用Page_load。

如果你想做一些事情,封裝一些方法的行動,並在預渲染中調用該方法。或者其他方面,使用JavaScript。

protected void Page_PreRender(object sender, EventArgs e) 
    { 
     UpdateButton1() 
     Thread.Sleep(10000); // no need to put sleep 
     UpdateButton2(); 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     UpdateButton1(); 
    } 

    protected void UpdateButton1() 
    { 
     changeLabel.Text = "Button1"; 
    } 
2

你在你的例子在做什麼是呼叫按鈕1和按鈕2的單擊事件的處理程序,這是不一樣的讓用戶單擊該按鈕,併爲形式回發到服務器。

如果你想讓按鈕點擊它們自己,然後把帖子發回服務器,你需要添加javascript來爲你點擊按鈕。

如果你想要的X秒後點擊一個按鈕,你的JavaScript,我會做這樣的事情: 在你的aspx頁面:

<asp:button ID="Button1" runat="server" ClientIDMode="Static" OnClick="Button1_Click"> 
</asp:button> 
在JavaScript文件或網頁上的某一塊

<script type="text/javascript"> 
    setTimeout(function(){ 
     document.getElementById("Button1").click(); 
    }, 10*1000); // 10 seconds 
</script> 

重要,這裏要注意的是,你必須要麼設置的ClientIDMode在您的按鈕=「靜態」,否則如果使用的是母版頁可能有一個很不起眼的名字,或者你可以這樣做:

<script type="text/javascript"> 
    setTimeout(function(){ 
     document.getElementById("<%= Button1.ClientID %>").click(); 
    }, 10*1000); // 10 seconds 
</script> 

如果您的.aspx文件中有JavaScript,而不是它自己的.js文件。

ps:如果你在一個aspx頁面中執行Thread.Sleep(X),你將只會讓用戶瀏覽器等待X毫秒多加載頁面,代碼在睡眠之前不會被提交到客戶瀏覽器的方式,我認爲你希望它做。

+0

雖然力求解決完整的問題,但給了我解決問題的基石。我現在已經解決了,我會很快在這裏發佈。 – 2014-10-01 03:37:08

相關問題