我正在关注本教程
我的 aspx 文件如下所示:
<asp:GridView ID="dgvPickups" runat="server" AutoGenerateColumns="false" CssClass="Grid" DataKeyNames="PickupID" OnRowDataBound="PickupRowDataBound" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<img alt="" style="cursor: pointer" src="Content/plus.png" />
<img alt="" style="cursor: pointer; display: none" src="Content/minus.png" />
<asp:Panel ID="pnlProductLines" runat="server" Style="display: none" >
<asp:GridView ID="dgvProductLines" runat="server" AutoGenerateColumns="false" CssClass="ChildGrid" EmptyDataText="No Product Records Found" >
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="ProductLineID" DataNavigateUrlFormatString="ProductLine.aspx?ProductLineID={0}" Text="Edit" />
<asp:BoundField DataField="SKU" HeaderText="SKU" />
<asp:BoundField DataField="ProductDescription" HeaderText="Description" />
<asp:BoundField DataField="NetWeight" HeaderText="Net Weight" />
<asp:BoundField DataField="Volume" HeaderText="Volume" />
<asp:BoundField DataField="ProductClass" HeaderText="Product Class" />
<asp:BoundField DataField="Hazmat" HeaderText="Hazmat" />
<asp:BoundField DataField="PackageCount" HeaderText="Package Count" />
<asp:BoundField DataField="HandlingUnits" HeaderText="Handling Units" />
<asp:BoundField DataField="Stackable" HeaderText="Stackable" />
<asp:BoundField DataField="NMFCNumber" HeaderText="NMFC Number" />
<asp:HyperLinkField DataNavigateUrlFields="ProductLineID" DataNavigateUrlFormatString="ProductLine.aspx?DeleteProductLineID={0}" Text="Delete" />
</Columns>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CustomerName" HeaderText="Customer Name" />
<asp:BoundField DataField="Name" HeaderText="Ship To" />
<asp:BoundField DataField="ContactName" HeaderText="Contact Name" />
<asp:BoundField DataField="ContactPhone" HeaderText="Contact Phone" />
<asp:BoundField DataField="ContactEmail" HeaderText="Contact Email" />
<asp:BoundField DataField="AccountNumber" HeaderText="Account Number" />
<asp:BoundField DataField="Instructions" HeaderText="Instructions" />
<asp:HyperLinkField DataNavigateUrlFields="PickupID" DataNavigateUrlFormatString="DeliveriesPickups.aspx?AddProducts={0}" Text="Add Products" />
<asp:HyperLinkField DataNavigateUrlFields="PickupID" DataNavigateUrlFormatString="DeliveriesPickups.aspx?PickupID={0}" Text="Edit" />
<asp:HyperLinkField DataNavigateUrlFields="PickupID" DataNavigateUrlFormatString="DeliveriesPickups.aspx?DeletePickupID={0}" Text="Delete" />
</Columns>
</asp:GridView>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
$("[src*=plus]").on("click", function () {
$(this).closest("tr").after("<tr><td></td><td class='products' colspan = '999'>" + $(this).closest("tr").find("[id*=Orders]").html() + "</td></tr>");
$(this).closest("tr").find("[src*=minus]").show();
$(this).hide();
});
$("[src*=minus]").on("click", function () {
$(this).closest("tr").next().remove();
$(this).closest("tr").find("[src*=plus]").show();
$(this).hide();
});
</script>
OnRowDataBound 事件如下所示:
Protected Sub PickupRowDataBound(sender As Object, e As GridViewRowEventArgs) Handles dgvPickups.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim pickupId As Integer = dgvPickups.DataKeys(e.Row.RowIndex).Value
Dim dgvProductLines As GridView = TryCast(e.Row.FindControl("dgvProductLines"), GridView)
dgvProductLines.DataSource = clsProductLine.RetrieveDTByPickupID(pickupId)
dgvProductLines.DataBind()
End If
End Sub
不幸的是,当我运行页面时,父 GridView 加载没有任何问题,但子 GridView 只显示“未定义”
任何帮助将不胜感激!
我尝试了几种不同的解决方案,当我单独加载每个 GridView 时,一切都按预期工作。
更改:$(this).closest("tr").after("" + $(this).closest("tr").find("[id*=Orders]").html() + "" );
到
$(this).closest("tr").after("" + $(this).closest("tr").find("[id*=ProductLiness]").html() + "");
我相信 dgvProductLines 是子 gridview。您的代码仍在寻找 gvOrders。