单击后立即禁用GridView中的按钮

时间:2015-10-13 15:40:07

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

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>

2 个答案:

答案 0 :(得分:0)

使用此代码段
将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函数只需要定义一次

答案 1 :(得分:0)

我强迫我做回发并成功转到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...';"/>