У меня есть 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)
Как я могу сделать?
Большое спасибо за интерес.
<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 кнопки в коде. Вы можете отключить кнопку, пока процесс не завершит выполнение.
Попробуй это
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);
});
});
jquery
, поэтому я сделал это с помощью jquery
. Я надеюсь, что вам нужна такая же функциональность.
Вы можете использовать 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();
});