jQuery单击gridview行上的选择按钮

Posted

技术标签:

【中文标题】jQuery单击gridview行上的选择按钮【英文标题】:jQuery to click select button on a gridview row 【发布时间】:2018-11-27 17:39:33 【问题描述】:

我有一个带有自动生成选择按钮的简单网格视图:

<asp:Gridview runat="server" id="gvChemDates" CssClass="c_gvv" 
    onselectedindexchanged="getValues" AutoGenerateSelectButton="True" />

我想隐藏选择列并允许我的用户通过单击行上的任意位置来选择它。使用 jQuery,我尝试了几种变体:

$('#gvChemDates tr').click(function () 
    $(this).closest('input[type=submit]').trigger('click');
)

但我似乎没有点击自动生成的选择按钮。有人能告诉我正确的语法吗?谢谢。

【问题讨论】:

.closest() 搜索当前节点级别并向上遍历,(api.jquery.com/closest),我想你是想使用 .find() 而不是 .closest() 我假设“自动生成”是动态的?试试$('#gvChemDates').on('click', ' tr', function () ...); aspsnippets.com/Articles/… 如果您想更简单地执行此操作,请查看我的答案 【参考方案1】:

$('#gvChemDates tr') 将不起作用(#gvChemDates 不存在)因为 ASP.NET 在使用 runat="server" 时会生成随机 id

使用ClientIDMode="Static" 确保客户端 ID 与服务器 ID 匹配:

<asp:Gridview runat="server" ClientIDMode="Static" id="gvChemDates" CssClass="c_gvv" 
    onselectedindexchanged="getValues" AutoGenerateSelectButton="True" />

注意:当您使用runat="server" ASP.NET 时,会为客户端 id 生成随机 id。所以我们使用ClientIDMode="Static" 来让client id 匹配server id。

【讨论】:

【参考方案2】:

带有 GridView 选择按钮的 Jquery 函数

<asp:TemplateField>
     <ItemTemplate>
            <asp:Button ID="moreDetail" runat="server" CommandName="select" Text="More Detail" onclientclick="pageLoad()" />
     </ItemTemplate>
</asp:TemplateField>

jQuery 函数

function pageLoad() 
    var gvid = '<%=GridDetail.ClientID %>';
    $('#' + gvid + ' input[type=button]').removeAttr('onclick');
    $('#' + gvid + ' input[type=button]').click(function () 

        //$('#' + gvid + ' tr').css('background-color', '#FFFFFF');
        var row = $(this).parent().parent();
        //row.css('background-color', '#669999');
        var cells = row.find('td'); // busca el valor de cada columna en el record releccionado.

        var premAmount = row.find('td').eq(7).html();
        var commAmount = row.find('td').eq(8).html();
        var account = row.find('td').eq(9).find(':input').val();
        var loan = row.find('td').eq(10).find(':input').val();
        var tranType = row.find('td').eq(11).find(':input').val();
        var semsys = row.find('td').eq(12).find(':input').val();
        var prodName = row.find('td').eq(13).find(':input').val();
        var contact = row.find('td').eq(15).find(':input').val();

        var commPercent = (parseFloat(commAmount.replace(/[$,]+/g, "")) / parseFloat(premAmount.replace(/[$,]+/g, ""))) * 100;

        $('#Span1').html(cells[0].innerHTML); // 1 
        $('#Span2').html(cells[1].innerHTML); // 2 certificate
        $('#Span3').html(tranType);
        $('#Span4').html(cells[2].innerHTML); // 4 insured
        $('#Span5').html(cells[4].innerHTML); // 5 eff date
        $('#Span6').html(cells[5].innerHTML); // 6 exp date
        $('#Span7').html(cells[6].innerHTML); // 7 cancel date
        $('#Span8').html(cells[3].innerHTML); // 8  type
        $('#Span9').html(loan);
        $('#Span10').html(account); // ******
        $('#Span11').html(premAmount);
        $('#Span12').html(commAmount);
        $('#Span13').html(prodName); // *****
        $('#Span14').html(semsys); // *******
        $('#Span15').html(commPercent); //****
        $('#Span16').html(contact); // ******

        $('div#Div_Details').slideToggle("slow"); //animation
        $('div#Div_Details').slideDown("slow");


    );   
;

【讨论】:

以上是关于jQuery单击gridview行上的选择按钮的主要内容,如果未能解决你的问题,请参考以下文章

JTree 通过单击行上的任意位置选择节点

动态创建的 html 表格行上的单行选择

Quasar QTable单击可点击行上的操作按钮

GridView 上的 jQuery 函数在页面回发后停止工作(鼠标悬停,单击)

查找gridview链接按钮值jquery

模拟网格行上的单击事件