【问题标题】:Disable button in GridView just after clicking it单击后禁用 GridView 中的按钮
【发布时间】:2015-10-13 15:40:06
【问题描述】:

GridView 代码:

<asp:GridView runat="server" ID="grid1" AutoGenerateColumns="false" ShowHeader="true">
    <Columns>
        <asp:TemplateField HeaderText="Title">
            <ItemTemplate>
                <asp:HyperLink ID="hlTitle" runat="server" />                           
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Delete">
            <ItemTemplate>                                                      
                <asp:LinkButton ID="Delete" runat="server" title="Delete" />                        
            </ItemTemplate>
        </asp:TemplateField>

我知道如何禁用 RowCommand 事件下的按钮,但我在这里发现的问题是该按钮没有立即被禁用 - 它在任务完成后被禁用。

我如何设置它,以便用户只能在 GridView 内单击一次按钮(可能针对单击它的行,但这并不重要)并且它会立即被禁用?

对于那些渴望投反对票的人,请注意我的研究我尝试了 JQuery 和 Javascript,但它们也没有工作。但是,由于我不是 100% 熟悉这些语言,我认为可能有另一个想法可以让我头疼。如果没有,我很乐意尝试任何一种语言。

编辑 1

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
<script type="text/javascript">
    function disableDel(delButton, evt) {
        delButton.disabled = true;
    }
</script>
</asp:Content>

和Gridview代码

        <asp:TemplateField HeaderText="Delete">
            <ItemTemplate>                                                      
                <asp:LinkButton ID="Delete" runat="server" title="Delete" OnClientClick="disableDel(this, evt);"/>                      
            </ItemTemplate>
        </asp:TemplateField>

【问题讨论】:

    标签: c# jquery asp.net vb.net gridview


    【解决方案1】:

    使用这个 sn-p
    将 JavaScript 标记放在页面的 Head 块中

    <script type="text/javascript">
        function disableDel(delButton) {
            delButton.disabled = true;
        }
    </script>
    <asp:Button ID="Delete" runat="server" title="Delete" OnClientClick="disableDel(this);" />   
    

    使用此脚本,您可以禁用页面上支持禁用属性/属性的任何控件。只需将this 作为参数传递给disableDel JavaScript 函数,例如

    <asp:Button ID="Save" runat="server" title="Save" OnClientClick="disableDel(this);" />   
    <asp:Button ID="Edit" runat="server" title="Edit" OnClientClick="disableDel(this);" />   
    

    JavaScript 函数只需要定义一次

    【讨论】:

      【解决方案2】:

      我已经强制我进行回发,它成功地转到了 gridview 的 RowCommand 事件。

      $("input[type='submit']").on("click", function () {
           var btn = $(this);
           btn.prop("disabled", true);
           btn.val("Submitting...");
           __doPostBack(btn.attr('name'), "");
      });
      

      或者将 UseSubmitBehavior 设置为 false 以使用 ASP.NET PostBack 机制,然后添加 OnClientClick 事件。

      <asp:LinkButton ID="Delete" runat="server" title="Delete" UseSubmitBehavior="false" OnClientClick="this.disabled = true; this.value = 'Submitting...';"/> 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 2011-08-19
        相关资源
        最近更新 更多