【问题标题】:Gridview inside gridview inside gridview网格视图内的网格视图 网格视图内的网格视图
【发布时间】:2020-09-28 19:01:53
【问题描述】:

我使用此代码绑定嵌套在 gvCustomers gridview 中的 gvOrders gridview。效果很好。

 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 网格视图?如何找到 gvOrders2 控件?

【问题讨论】:

  • 和第一个一样。使用OnRowDataBound 并找到嵌套的GridView。
  • 但是如何找到控件呢?

标签: asp.net vb.net gridview


【解决方案1】:

在 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

【讨论】:

  • 它有效,谢谢。最后一行是 gvOrders2.DataBind()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
相关资源
最近更新 更多