Отключить LinkButton в UpdatePanel после первого щелчка

Я работаю над страницей веб-форм ASP.NET со следующей разметкой asp (с удаленными дополнительными элементами управления):

<asp:UpdatePanel ID="updatePanel1" runat="server">
    <ContentTemplate>
        <asp:LinkButton ID="lnkbtnPreviousTop" OnClick="LinkButtonPrevious_Click"
            Text="Previous" runat="server">
        </asp:LinkButton>
    </ContentTemplate>
</asp:UpdatePanel>

Прямо сейчас, если вы нажмете эту LinkButton несколько раз, обработчик событий LinkButtonPrevious_Click на стороне сервера сработает столько раз, сколько нажатие на ссылку. Как сделать так, чтобы lnkbtnPreviousTop LinkButton отключался после первого щелчка, но обработчик событий по-прежнему запускался один раз, а UpdatePanel обновлялась?

Я попытался добавить this.disabled = true; к атрибуту OnClick, но тогда код обработчика событий не попал.


person Michael Hornfeck    schedule 15.03.2012    source источник


Ответы (2)


Просто вызовите обратную передачу прямо в onclick, например:

lnkbtnPreviousTop.Attributes.Add("onclick", "this.disabled=true;" + Page.ClientScript.GetPostBackEventReference(lnkbtnPreviousTop, "").ToString());
person javram    schedule 16.03.2012
comment
или вместо того, чтобы отключать кнопку, вы можете изменить стиль кнопок, чтобы сделать ее скрытой. - person javram; 16.03.2012
comment
Я попытался добавить атрибут onclick, как вы предложили; однако из-за этого обработчик событий запускался дважды для каждого щелчка. Я отказался от этого подхода и, по сути, последовал вашему второму совету по управлению стилями. - person Michael Hornfeck; 16.03.2012
comment
Прохладный. Рад слышать, что это помогло. - person javram; 17.03.2012
comment
Большое спасибо! Сработало как шарм, в панели обновлений не разобрался. - person stillsmallvoice; 27.06.2013

Можете ли вы поделиться ответом на решение, отключенное asp: LinkButton после первого щелчка?

@Michael Hornfeck

Я пытаюсь использовать функции javascript, но не могу ответить

<script type="text/javascript">
        function disabledLinkBringDataFlow() {
           
            document.getElementById('btnBringDataFlow').setAttribute("disabled", "");
           
            //document.getElementById("btnBringDataFlow").disabled = true;
        }
    </script>  

person Davideveloper    schedule 06.05.2019