我有嵌套 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)
{
}
好的,所以用户想对主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]
}
这可能会让您开始...
GridView gvGV2 = e.Row.FindControl("GV2") as GridView;
gvGV2.DataSource = "..."; //Your DataSource
gvGV2.DataBind();
// or do something else.