通过单击按钮使用Jquery获取Gridview的标签值

时间:2015-06-27 02:25:27

标签: javascript c# jquery asp.net gridview

我有这个带有标签描述和按钮编辑的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;
    }

3 个答案:

答案 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());
}