2014-09-29 1 views
0

У меня есть 2 кнопки на стороне сервера asp.net, мне нужно автоматизировать щелчки кнопок. i.e. После page_load мне нужно нажать кнопку1, и после того, как его результаты будут показаны на странице, подождите 10 секунд и нажмите кнопку2.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 (отправитель объекта, EventArgs e) doesnot ударил atall при программном нажатии кнопки.

Любая идея, как достичь решения.

+1

Это похоже на странный сценарий для веб-страницы, использующей кнопки ASP. Вам понадобится код на стороне клиента, если вы хотите подождать десять секунд после загрузки страницы. Изучали ли вы программную форму HTML-форм с использованием JavaScript? –

+0

@MatthewHaugen: спасибо за быстрый ответ. Я понятия не имею, как этого добиться. –

ответ

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

Что вы делаете в вашем примере, чтобы вызвать обработчики button1 и событий щелчка button2, то есть не то же самое, имея пользователь нажимает на кнопки, и форма обратной передачи на сервер.

Если вы хотите, чтобы кнопки нажимали на них сами, и после отправки сообщения на сервер вам нужно добавить javascript, который нажимает на кнопки для вас.

Если вы хотите 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 = «Static» на кнопке, в противном случае это может иметь очень неясное имя, если вы используете мастер-страницы, или вы можете сделать:

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

если у вас есть javascript в вашем .aspx-файле, а не его собственный .js-файл.

ps: если вы выполните Thread.Sleep (X) на странице aspx, вы заставите браузер пользователей ждать, пока X миллисекунды больше загружат страницу, код запускается до того, как сон не будет отправлен на браузером клиентов так, как я думаю, вы хотите, чтобы это было сделано.

+0

, хотя он решает всю проблему, но дал мне строительный блок для решения проблемы.Я решил это сейчас, я отправлю его очень скоро здесь. –

Смежные вопросы