首页 > 解决方案 > 使用 jquery 获取嵌套 gridview 的总行数 - ASP.NET C#

问题描述

我有一个带有子网格视图(gvuser)的gridview(gvShop),因为它是itemtemplate,如下所示。现在我想检查该子网格视图是否为空。我怎样才能使用 jquery 做到这一点?我正在使用var totalRows = $("#<%=gvShop.ClientID %> tr").length;但不是 gvuser 获取 gvshop 的总行数。

 <asp:GridView ID="gvShop" runat="server" AutoGenerateColumns="false" 
DataKeyNames="c_id" OnRowDataBound="OnRowDataBound" 
ShowHeader="False">
 <Columns>
 <asp:TemplateField >
 <ItemTemplate>
    <asp:Panel ID="pnlOrders" runat="server" Style="display: none">
    <div style="float:left;width:90%">
    <asp:GridView ID="gvuser" runat="server"  AutoGenerateColumns="false" HorizontalAlign="Center" ShowFooter="true" Width="80%" HeaderStyle-Height="30px" >
     <Columns>
    <asp:TemplateField HeaderText="SNo"  ItemStyle-Width="15%" ItemStyle-Height="25px">
    <ItemTemplate>
     <%# ((GridViewRow)Container).RowIndex + 1%></ItemTemplate>           
 </asp:TemplateField>
                    <asp:TemplateField ItemStyle-Width="54%"  HeaderText="Airlines" ItemStyle-Height="25px">   
<ItemTemplate >
<asp:Label ID="lblusername" runat="server"  Text = '<%#Eval("user_name")%>' />
</ItemTemplate>
</asp:TemplateField>
                    </Columns>
                     <FooterStyle  HorizontalAlign="Center" />  
                </asp:GridView></div>
            </asp:Panel>
        </ItemTemplate>
    </asp:TemplateField>
   <asp:BoundField ItemStyle-Width="100%" DataField="cat_name"  /> 
</Columns>
 </asp:GridView>

标签: jqueryasp.net

解决方案


在“gvuser”的嵌套gridview之前应用一个类并在jquery中使用每个循环

检查以下代码:

<asp:GridView ID="gvShop" runat="server" AutoGenerateColumns="false"
                DataKeyNames="c_id" OnRowDataBound="OnRowDataBound"
                ShowHeader="False">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Panel ID="pnlOrders" runat="server" Style="display: none">
                    <div style="float:left;width:90%" class="userGrid">
                        <asp:GridView ID="gvuser" runat="server" AutoGenerateColumns="false" HorizontalAlign="Center" ShowFooter="true" Width="80%" HeaderStyle-Height="30px">
                            <Columns>
                                <asp:TemplateField HeaderText="SNo" ItemStyle-Width="15%" ItemStyle-Height="25px">
                                    <ItemTemplate>
                                        <%# ((GridViewRow)Container).RowIndex + 1%>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField ItemStyle-Width="54%" HeaderText="Airlines" ItemStyle-Height="25px">
                                    <ItemTemplate>
                                        <asp:Label ID="lblusername" runat="server" Text='<%#Eval("user_name")%>' />
                                    </ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                            <FooterStyle HorizontalAlign="Center" />
                        </asp:GridView>
                    </div>
                </asp:Panel>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField ItemStyle-Width="100%" DataField="cat_name" />
    </Columns>
</asp:GridView>

现在为 jQuery 使用下面的代码:

$(document).ready(function () {

    $("#<%=gvShop.ClientID %> tr").each(function () {
        if ($(this).find('.userGrid table tr').length > 0) {
            console.log('Yes, User Data has row');
        } else {
            console.log('No, User Data has not any row');
        }
    });//end of loop

});

这里'each'循环将一一检查所有父行以检查类'.userGrid'是否有任何表。


推荐阅读