Отключить LinkButton при нажатии - ничего не работает

Я видел несколько сообщений, но не могу заставить это работать. У меня есть настройка кнопки «Сохранить» как LinkButton. Когда они нажимают на нее, я хочу, чтобы она запускала обратную передачу, но также отключала кнопку, чтобы они не могли нажимать на нее много раз. Я пробовал отключить кнопку через панели обновления javascript, ajax, но ничего не работает. Даже в Javascript я сделал предупреждение, поэтому я знаю, что он попадает в функцию JS, но никогда не отключал кнопку. Вот структура моей панели кнопок. Есть мысли о том, как его структурировать?

<div class="navbar-collapse collapse navbar-right" id="main_navbar">
                    <ul class="nav navbar-nav">
                        <li id="liNew" runat="server">
                            <asp:LinkButton ID="lnkbtnNew" CssClass="" runat="server" ToolTip="Click to add a new record" TabIndex="3">
                            <span class ="fa fa-plus"></span>
                            <span class=""></span>
                            <span class="">~New~</span>
                            </asp:LinkButton>
                        </li>
                        
                        <li id="liSave" runat="server">
                            <asp:LinkButton ID="lnkbtnSave" CssClass="" runat="server" ToolTip="Click to save this record" TabIndex="6">
                        <!-- OnClientClick="javascript:DisableButton(this);" -->
                            <span class="fa fa-floppy-o"></span>
                            <span class=""></span>
                            <span class="">~Save~</span>
                            </asp:LinkButton>
                        </li>
                    </ul>
                </div>

Возможно, я просто не знаю, как структурировать UpdatePanel, но если я помещу в него весь этот Div, ничего не сработает.

Я пробовал Javascript ниже, а затем я добавил к LinkButton атрибут OnClientClick = javascript: DisableButton (this);

function DisableButton(e) {
        var x = document.getElementById('lnkbtnSave');
        if (x != null) {
            x.disabled = true;
            alert("disabled");
        }
        return false;
    }

Пытался вернуть истину или вернуть ложь выше, и ничто никогда не отключает элемент управления на экране.


person Sherry Jackson    schedule 10.08.2020    source источник
comment
Быстрый поиск в Google и, возможно, этот stackoverflow.com/questions/10276133 / how-to-disable-html-links может работать?   -  person Salik Rafiq    schedule 10.08.2020
comment
Href вызывает обратную передачу, которую я все еще хочу выполнить ... Я просто хочу отключить кнопку после того, как они нажмут ее один раз.   -  person Sherry Jackson    schedule 10.08.2020


Ответы (1)


По умолчанию LinkButton имеет значение Enabled/Disabled (как было до Postback) после каждой обратной передачи, и вы не можете использовать js напрямую, поскольку страница обновляется при каждой обратной передаче.
Итак, если вам всегда нужна эта кнопка, вызывающая PostBack, самый простой способ отключить ее - со стороны сервера следующим образом (существуют другие способы, но более сложные с файлами cookie, js и т. Д., Но я советую это):

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    ' Be sure the PostBack is caused by Button your lnkbtnSave   
    If IsPostBack AndAlso Page.Request.Params.Get("__EVENTTARGET").Equals(lnkbtnSave.ID) Then

        'here test your scenarios which decides if you have to disable or not your button
        If 1 = 1 Then
            lnkbtnSave.Enabled = False
        End If

    End If

End Sub
person G3nt_M3caj    schedule 10.08.2020