使用jQuery获取选定行的隐藏列的值

时间:2018-11-15 18:40:14

标签: javascript c# jquery asp.net

我有一个包含1个隐藏列和6个列的gridview。我试图在用户单击行中的按钮时获取隐藏列行的值,但它没有选择隐藏列。它获取第一列的值,即第一可见列(名字)。

有没有一种方法可以获取隐藏列(UserID)的值?

这就是我所拥有的:

C#

<asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="false" class="table table-bordered" ClientIDMode="Static" DataKeyNames="UserID, Firstname" OnRowCommand="gvUsers_RowCommand" OnRowDeleting="gvUsers_RowDeleting">
    <Columns>
        <asp:BoundField DataField="UserID" Visible="false" HeaderText="UserID" />
        <asp:BoundField DataField="FirstName" HeaderText="First Name" />
        <asp:BoundField DataField="LastName" HeaderText="Last Name" />
        <asp:BoundField DataField="Username" HeaderText="Username" />
        <asp:BoundField DataField="Phone" HeaderText="Cellphone Number" SortExpression="EventDescription" />
        <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="EventDescription" />
        <asp:TemplateField HeaderText="Action">
            <ItemTemplate>
                <asp:Button ID="btnTest" runat="server" Text="Button" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

jQuery:

<script type="text/javascript">
    $(function () {
        $('[id*=btnTest]').on("click", function () {
            var id = $(this).closest("tr").find('td:eq(0)').text();
            alert(id);
            return false;
        });
    });
</script>

请协助单击按钮时如何获取隐藏的列值。谢谢。

1 个答案:

答案 0 :(得分:2)

最简单的方法是将其添加到隐藏元素中的TemplateField中

<asp:TemplateField>
    <ItemTemplate>
        <span style="display:none"><%# Eval("UserID") %></span>

        <asp:Button ID="btnTest" runat="server" Text="Button" />
    </ItemTemplate>
</asp:TemplateField>

并将脚本修改为

var id = $(this).closest("tr").find('span').html();

更新

如@Taplar所述,您也可以使用属性。但是您需要将它们添加到RowDataBound事件中。

if (e.Row.RowType == DataControlRowType.DataRow)
{
    DataRowView row = e.Row.DataItem as DataRowView;

    e.Row.Attributes.Add("data-userid", row["userid"].ToString());
}

该脚本将变成

var id = $(this).closest("tr").data('userid');