Отключить / изменить текст кнопки, пока не нажмете процедуру компиляции?

0

У меня есть asp Button (runat = "server") в моей веб-форме в панели обновления.

<asp:UpdatePanel ID="UpdatePanelDoIt" runat="server">
<asp:Literal ID="LiteralDoIt" runat="server"></asp:Literal>
   <asp:Button ID="ButtonDoIt" runat="server" Text="DoIt"/>     
</asp:UpdatePanel>   

И эта кнопка делает что-то, когда я нажимаю.

Private Sub ButtonDoIt_Click(sender As Object, e As EventArgs) Handles ButtonDoIt.Click

   me.ButtonDoIt.Enabled=False
   me.ButtonDoIt.Text="Please wait..."

   bla bla bla bla 'it takse one or two minute
   LiteralDoIt.Text="<a href= bla bla"
   bla bla bla bla

   'finish process

   me.ButtonDoIt.Enabled=true
   me.ButtonDoIt.Text="Process Complete!"

End Sub

Но моя кнопка не отключена или не меняет текст при нажатии этой кнопки

Только я могу увидеть, что процесс завершен, когда процесс завершен.

В форме окна я всегда использую "application.doevent" после строки keytext. И я вижу изменение в своей форме.

Но asp.net этого не допускает (я использую vb.net)

Как я могу сделать?

Большое спасибо за интерес.

3 ответа

0
Лучший ответ
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Disable Button and Change Text of button</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sc" runat="server" EnablePartialRendering="true">
</asp:ScriptManager>

 <script type="text/javascript">
 Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
 function BeginRequestHandler(sender, args) {
 document.getElementById('<%= lblMessage.ClientID %>').innerText = "Processing...";
 args.get_postBackElement().disabled = true;
 }
 </script>

<asp:UpdatePanel ID="updpnlSubmit" runat="server">
<ContentTemplate>
<asp:Button ID="btnSubmit" Text="Submit" runat="server" OnClick="btnSubmit_Click" />
<asp:Label ID="lblMessage" runat="server"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>

Добавить скриптовый тег на странице источника. change Id кнопки в коде. Вы можете отключить кнопку, пока процесс не завершит выполнение.

  • 0
    это именно то, что я хотел. спасибо большое бред!
1

Попробуй это

HTML

<input type="submit" id="btnid" value="Save" />

JS

 $(function(){
       $('#btnid').click(function(){
        $(this).val('processing...');
        $(this).prop('disabled',true);
        setTimeout(function(){$('#btnid').val('finished');$('#btnid').removeAttr('disabled');},5000);
    });
 });

ДЕМО ЗДЕСЬ

  • 0
    спасибо, но где мои реальные строки кода процесса на стороне сервера? Этот пример не работает для меня.
  • 0
    Вы пометили jquery , поэтому я сделал это с помощью jquery . Я надеюсь, что вам нужна такая же функциональность.
0

Вы можете использовать ajax, или вам нужно будет оценить время и сделать то, что сделал @Kiranramchadran.

Посмотрите следующий пример, используя AJAX в VB.NET

Название класса

Public Class NameHere

VB Page_Load

Ajax.Utility.RegisterTypeForAjax(GetType(NameHere), Me.Page)

Функция VB

<Ajax.AjaxMethod()> _
Public Function ButtonClick() ...

Javascript

$('#btn').click(function(){
    // Here you can disable your button

    // Call your ajax function
    NameHere.ButtonClick();
});
  • 0
    спасибо а что такое "имя тут"? какой объект на моем примере?
  • 0
    @ FıratK. Имя Здесь ваше имя класса. Например: «Public Class Test» ... Ваше NameHere = Test ( msdn.microsoft.com/en-us/library/aa479042.aspx )

Ещё вопросы

Сообщество Overcoder
Наверх
Меню