我有一个包含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>
请协助单击按钮时如何获取隐藏的列值。谢谢。
答案 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');