如何通过外部按钮单击事件隐藏和显示嵌套GridView中的内部Gridview?

问题描述 投票:0回答:2

我有嵌套 Gridview 的问题!

我有两个带有 ID 的 Girdview - GridView1(父 Gridview)和 GV2(子 Gridview)

我有一个 Asp:Button,其 ID 为 - btnedit(Event = OnClick())

问:如何在btnedit_Onclick事件中访问GV2?

我已附上代码供您参考:

<form id="form1" runat="server">
        <asp:Button runat="server" ID="btnedit" Text="Edit" OnClick="btnedit_Click" />
        <asp:GridView runat="server" ID="Gridview1">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Label runat="server" ID="Lable1"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:GridView runat="server" ID="GV2">
                            <Columns>
                                <asp:TemplateField>
                                    <ItemTemplate>
                                        <asp:Label runat="server" ID="Lable2"></asp:Label>
                                    </ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                        </asp:GridView>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </form>

背后代码:

protected void btnedit_Click(object sender, EventArgs e)
  {

  }
    
c# asp.net onclick buttonclick nested-gridview
2个回答
0
投票

好的,所以用户想对主GV的第1行进行操作,然后获取子GV的第1行。

Gridviews 从 0 开始,所以不清楚,但让我们取前两行。

接下来呢?我真的(但真的真的)建议你使用主列表视图,然后嵌套一个子 GV。

如果你嵌套两个 GV,你往往会得到这样的结果:

说出这个GV,用“+”来展开子网格:

扩展一下,你会得到这个:

因此,嵌套网格非常困难,因为“列跨度”很难设置。

但是,如果我构建一个主列表视图(看起来与 GV 相同),然后构建一个 gv,那么我会得到以下结果:

所以上面使用了一个主列表视图,因此为了扩展子记录,我确实在列表视图的子视图中使用了 GV。

如果您愿意,我可以发布上述工作原理,甚至标记。

但是,让我们使用两个嵌套的 GV - 它会使 UI 变得一团糟,但为了学习,它如何与上面的嵌套 LV + GV 或 GV + GV 一起工作是相同的。

因此,一些平面简按钮 - 在两个网格之外,获取主网格的第一行,然后获取子网格的第一行。

这有效:

    protected void Button1_Click(object sender, EventArgs e)
    {
        GridViewRow MainGvRow = GridView1.Rows[0];
        GridView ChildGV = MainGvRow.FindControl("GridView2") as GridView;

        GridViewRow ChildGVRow = ChildGV.Rows[0]
    }

0
投票

这可能会让您开始...

GridView gvGV2 = e.Row.FindControl("GV2") as GridView;
gvGV2.DataSource = "..."; //Your DataSource
gvGV2.DataBind();
// or do something else.
© www.soinside.com 2019 - 2024. All rights reserved.