Gridview 内部 gridview 内部 gridview
Gridview inside gridview inside gridview
我使用此代码绑定嵌套在 gvCustomers 网格视图中的 gvOrders 网格视图。它完美运行。
Protected Sub OnRowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim code As String = "1"
AccessDataSource2.SelectCommand = "SELECT * FROM [Tabella4] WHERE ([d] = '" & code & "')"
Dim gvOrders As GridView = TryCast(e.Row.FindControl("gvOrders"), GridView)
gvOrders.DataSource = AccessDataSource2
gvOrders.DataBind()
End If
这是 HTML 的一面。一共有三个gridview: gvOrders2 inside gvOrders inside gvCustomers.
<asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns="false" CssClass="Grid"
DataKeyNames="a" OnRowDataBound="OnRowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<img alt = "" style="cursor: pointer" src="images/plus.png" />
<asp:Panel ID="pnlOrders" runat="server" Style="display: none">
<asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false" CssClass = "ChildGrid">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<img alt = "" style="cursor: pointer" src="images/plus.png" />
<asp:Panel ID="pnlOrders2" runat="server" Style="display: none">
<asp:GridView ID="gvOrders2" runat="server" AutoGenerateColumns="false" CssClass = "ChildGrid">
<Columns>
<asp:BoundField ItemStyle-Width="150px" DataField="f" HeaderText="f" />
<asp:BoundField ItemStyle-Width="150px" DataField="g" HeaderText="g" />
</Columns>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField ItemStyle-Width="150px" DataField="d" HeaderText="d" />
<asp:BoundField ItemStyle-Width="150px" DataField="e" HeaderText="e" />
</Columns>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField ItemStyle-Width="150px" DataField="a" HeaderText="a" >
<ItemStyle Width="150px"></ItemStyle>
</asp:BoundField>
<asp:BoundField ItemStyle-Width="150px" DataField="b" HeaderText="b" >
<ItemStyle Width="150px"></ItemStyle>
</asp:BoundField>
</Columns>
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="~/App_Data/db1.mdb" SelectCommand="SELECT * FROM [Tabella3]">
</asp:AccessDataSource>
<asp:AccessDataSource ID="AccessDataSource2" runat="server"
DataFile="~/App_Data/db1.mdb" SelectCommand="SELECT * FROM [Tabella4]">
</asp:AccessDataSource>
<asp:AccessDataSource ID="AccessDataSource3" runat="server"
DataFile="~/App_Data/db1.mdb" SelectCommand="SELECT * FROM [Tabella5]">
</asp:AccessDataSource>
gvOrders2 网格视图嵌套在 gvOrders 网格视图中:
如何从 AccessDataSource3 填充 gvOrders2 gridview?如何找到gvOrders2控件?
在 aspx 中,添加 OnRowDataBound... 文本:
<asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false"
CssClass = "ChildGrid" OnRowDataBound="gvOrders2_OnRowDataBound">
在你的cs中添加函数:
Protected Sub gvOrders2_OnRowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
并在该函数中使用您在 OnRowDataBound 中使用的相同方法。类似于:
If e.Row.RowType = DataControlRowType.DataRow Then
AccessDataSource3.SelectCommand = "SELECT ..."
Dim gvOrders2 As GridView = TryCast(e.Row.FindControl("gvOrders2"), GridView)
gvOrders2.DataSource = AccessDataSource3
gvOrders2.DataBind()
End If
我使用此代码绑定嵌套在 gvCustomers 网格视图中的 gvOrders 网格视图。它完美运行。
Protected Sub OnRowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim code As String = "1"
AccessDataSource2.SelectCommand = "SELECT * FROM [Tabella4] WHERE ([d] = '" & code & "')"
Dim gvOrders As GridView = TryCast(e.Row.FindControl("gvOrders"), GridView)
gvOrders.DataSource = AccessDataSource2
gvOrders.DataBind()
End If
这是 HTML 的一面。一共有三个gridview: gvOrders2 inside gvOrders inside gvCustomers.
<asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns="false" CssClass="Grid"
DataKeyNames="a" OnRowDataBound="OnRowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<img alt = "" style="cursor: pointer" src="images/plus.png" />
<asp:Panel ID="pnlOrders" runat="server" Style="display: none">
<asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false" CssClass = "ChildGrid">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<img alt = "" style="cursor: pointer" src="images/plus.png" />
<asp:Panel ID="pnlOrders2" runat="server" Style="display: none">
<asp:GridView ID="gvOrders2" runat="server" AutoGenerateColumns="false" CssClass = "ChildGrid">
<Columns>
<asp:BoundField ItemStyle-Width="150px" DataField="f" HeaderText="f" />
<asp:BoundField ItemStyle-Width="150px" DataField="g" HeaderText="g" />
</Columns>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField ItemStyle-Width="150px" DataField="d" HeaderText="d" />
<asp:BoundField ItemStyle-Width="150px" DataField="e" HeaderText="e" />
</Columns>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField ItemStyle-Width="150px" DataField="a" HeaderText="a" >
<ItemStyle Width="150px"></ItemStyle>
</asp:BoundField>
<asp:BoundField ItemStyle-Width="150px" DataField="b" HeaderText="b" >
<ItemStyle Width="150px"></ItemStyle>
</asp:BoundField>
</Columns>
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="~/App_Data/db1.mdb" SelectCommand="SELECT * FROM [Tabella3]">
</asp:AccessDataSource>
<asp:AccessDataSource ID="AccessDataSource2" runat="server"
DataFile="~/App_Data/db1.mdb" SelectCommand="SELECT * FROM [Tabella4]">
</asp:AccessDataSource>
<asp:AccessDataSource ID="AccessDataSource3" runat="server"
DataFile="~/App_Data/db1.mdb" SelectCommand="SELECT * FROM [Tabella5]">
</asp:AccessDataSource>
gvOrders2 网格视图嵌套在 gvOrders 网格视图中: 如何从 AccessDataSource3 填充 gvOrders2 gridview?如何找到gvOrders2控件?
在 aspx 中,添加 OnRowDataBound... 文本:
<asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false"
CssClass = "ChildGrid" OnRowDataBound="gvOrders2_OnRowDataBound">
在你的cs中添加函数:
Protected Sub gvOrders2_OnRowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
并在该函数中使用您在 OnRowDataBound 中使用的相同方法。类似于:
If e.Row.RowType = DataControlRowType.DataRow Then
AccessDataSource3.SelectCommand = "SELECT ..."
Dim gvOrders2 As GridView = TryCast(e.Row.FindControl("gvOrders2"), GridView)
gvOrders2.DataSource = AccessDataSource3
gvOrders2.DataBind()
End If