我有这个带有标签描述和按钮编辑的ASP Gridview,我的问题是我无法使用JQuery在按钮点击时获得标签的ID。我怎样才能做到这一点?
这是我的HTML代码
<asp:GridView runat="server" ID="grdAssetInventory" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="Decription">
<ItemTemplate>
<asp:Label ID="lblDesc" runat="server" Text='<% #Eval("Description")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button runat="server" ID="grdEdit" Text="Edit" OnClientClick="return GetSelectedRow(this)" />
</ItemTemplate>
</ItemTemplateField>
</Columns>
</asp:GridView>
我的JQuery代码
function GetSelectedRow(lnk) {
var row = lnk.parentNode.parentNode;
var rowIndex = row.rowIndex - 1;
alert("RowIndex: " + rowIndex);
return false;
}
答案 0 :(得分:0)
查看标签的ClientIDMode属性 - https://msdn.microsoft.com/en-us/library/system.web.ui.clientidmode.aspx
您可能希望将其更改为Predictable。
答案 1 :(得分:0)
我看到你正在使用javascript。如果你真的使用JQuery。这对我有用:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ID" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID">
<ItemStyle CssClass="idField"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:ButtonField Text="Button" ControlStyle-CssClass="buttonField"/>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DefaultConnection %>"
SelectCommand="SELECT * FROM [Customer]"></asp:SqlDataSource>
<script type="text/javascript">
$(document).ready(function () {
$.each($(".buttonField"), function(index, btn) {
$(btn).on('click', function (e) {
alert("Row clicked " + $("table tr").index($(this).closest("tr"))
+ ", Id " + $(this).parent("td").siblings("td.idField").text().trim());
e.preventDefault();
});
});
});
</script>
请注意,我提供名称 idField 和 buttonField ,以便更轻松地进行遍历。
答案 2 :(得分:0)
我知道我参加派对已经迟到了,但我自己也很难找到解决方案,我希望这可以帮助任何人像我一样挣扎。 这是另一个问题中找到的解决方案:How to Get TextBox value from button click in Nested Gridview 在ConnorsFan提供的答案中,很明显他使用jquery中的以下代码找到某个控件的方法
1.)在grid.net的项目模板的asp.net html部分中:
<= 0
2。)jquery代码
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="showText(this); return false;" />
</ItemTemplate>
gridview在html中表示为行和表数据单元格的表格,因此不是搜索搜索表格行的div或者&#39; tr&#39; 我创建了一个隐藏字段,并在gridview_rowdatabound()中为其分配了一个值,以便能够区分不同的类型,最终的代码是:
function showText(btn) {
alert($(btn).closest('div').find('input[type=text]').val());
}