如何通过外部按钮单击事件在嵌套的 GridView 中查找内部 Gridview?
How to Find the Inner Gridview in a nested GridView via external button click event?
我对嵌套的 Gridview 有疑问!
我有两个 ID 为 GridView1(父 Gridview)和 GV2(子 Gridview)的 Girdview
我有一个 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)
{
}
这可能会让您入门...
GridView gvGV2 = e.Row.FindControl("GV2") as GridView;
gvGV2.DataSource = "..."; //Your DataSource
gvGV2.DataBind();
// or do something else.
好的,所以用户想对主GV的第1行进行操作,然后得到子GV的第1行。
Gridviews 从 0 开始,所以不清楚,但让我们取前两行。
接下来呢?我真的(但真的真的)建议你使用一个主列表视图,然后嵌套一个子 GV。
如果你嵌套两个 GV,你往往会得到这个:
说这个GV,用“+”展开子网格:
然后扩展,你会得到这个:
因此,嵌套网格非常困难,因为“col span”很难设置。
但是,如果我构建一个主列表视图(看起来与 GV 相同),然后再构建一个 gv,那么我会得到:
所以上面使用了主列表视图,因此为了扩展子记录,我确实在列表视图的子视图中使用了 GV。
我可以post上面的工作原理,如果您愿意,甚至可以是标记。
但是,让我们使用两个嵌套的 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 有疑问!
我有两个 ID 为 GridView1(父 Gridview)和 GV2(子 Gridview)的 Girdview
我有一个 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)
{
}
这可能会让您入门...
GridView gvGV2 = e.Row.FindControl("GV2") as GridView;
gvGV2.DataSource = "..."; //Your DataSource
gvGV2.DataBind();
// or do something else.
好的,所以用户想对主GV的第1行进行操作,然后得到子GV的第1行。
Gridviews 从 0 开始,所以不清楚,但让我们取前两行。
接下来呢?我真的(但真的真的)建议你使用一个主列表视图,然后嵌套一个子 GV。
如果你嵌套两个 GV,你往往会得到这个:
说这个GV,用“+”展开子网格:
然后扩展,你会得到这个:
因此,嵌套网格非常困难,因为“col span”很难设置。
但是,如果我构建一个主列表视图(看起来与 GV 相同),然后再构建一个 gv,那么我会得到:
所以上面使用了主列表视图,因此为了扩展子记录,我确实在列表视图的子视图中使用了 GV。
我可以post上面的工作原理,如果您愿意,甚至可以是标记。
但是,让我们使用两个嵌套的 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]
}