如何基于外部gridview选择填充内部gridview(ASP.NET/C#)

如何基于外部gridview选择填充内部gridview(ASP.NET/C#),c#,asp.net,gridview,nested,objectdatasource,C#,Asp.net,Gridview,Nested,Objectdatasource,我有两个GridView,InnerGridView嵌套在OuterGridView的TemplateField中。 每个GridView都有一个ObjectDataSource(ODS)。我希望InnerGridView显示唯一的数据 到OuterGridView中列出的组名。我已经在谷歌上搜索了几个星期, 看到基于RowDataBond和ODS选择事件的各种想法 我认为RowDataBond不是答案,因为InnerGridView的Selecting事件是ODS 为OuterGridView

我有两个GridView,InnerGridView嵌套在OuterGridView的TemplateField中。 每个GridView都有一个ObjectDataSource(ODS)。我希望InnerGridView显示唯一的数据 到OuterGridView中列出的组名。我已经在谷歌上搜索了几个星期, 看到基于RowDataBond和ODS选择事件的各种想法

我认为RowDataBond不是答案,因为InnerGridView的Selecting事件是ODS 为OuterGridView调用RowDataBound时已调用

因此,我需要向InnerGridView的ODS发送一个参数:

protected void ProductDataSource_Selecting( object sender, ObjectDataSourceSelectingEventArgs e ) {
        e.InputParameters["productGroup"] = <here I need to access the GroupName from the OuterGridView>;
}
protectedvoid ProductDataSource\u正在选择(对象发送方、对象数据源选择事件参数e){
e、 InputParameters[“productGroup”]=;
}
注意:此方法分配给InnerGridView ODS的Selecting事件

我的问题是:如何从OuterGridView访问GroupName。。。当我处理InnerGridView时。 下面是一个不起作用的示例:OuterGridView.SelectedRow.FindControl(“GroupName”).ToString()

我听说,通过搜索特定的层次结构,可以从Selecting事件中找到任何控件。 但我不知道如何使用“e”或“sender”参数访问该层次结构。 如果我能找到各种对象和控件的解释。。。以及它们具有有效作用域的位置 以及如何访问它们。。。那会有帮助的


非常感谢,,Paul

如果将发送方对象强制转换为gridview对象en,则在此处使用like和获取组名?

如果将发送方对象强制转换为gridview对象en,则在此处使用like和获取组名?

如果要将内部gridview与外部gridview的组名绑定,请执行以下步骤

1) 如果(!IsPostBack)绑定外部GridView。 2) 在外部GridViews RowDataBound事件中,通过检查条件查找内部GridView 如果(e.Row.RowType==DataControlRowType.DataRow) { DataRowView drv=((DataRowView)e.Row.DataItem); GridView InnerGridView=(GridView)e.Row.FindControl(“InnerGridView”); 如果(InnerGridView!=null) { string GroupName=drv[“GroupName”];//获取GropName。 InnerGridView.DataSource=“Query WRT the GroupName”; InnerGridView.DataBind(); }
}

如果要将内部GridView与外部GridView的GroupName绑定,请执行以下步骤

1) 如果(!IsPostBack)绑定外部GridView。 2) 在外部GridViews RowDataBound事件中,通过检查条件查找内部GridView 如果(e.Row.RowType==DataControlRowType.DataRow) { DataRowView drv=((DataRowView)e.Row.DataItem); GridView InnerGridView=(GridView)e.Row.FindControl(“InnerGridView”); 如果(InnerGridView!=null) { string GroupName=drv[“GroupName”];//获取GropName。 InnerGridView.DataSource=“Query WRT the GroupName”; InnerGridView.DataBind(); }
}希望以下内容能有所帮助

ASPX页面:

    <asp:ObjectDataSource ID="ODS1" runat="server"></asp:ObjectDataSource>
    <asp:GridView ID="GV1" runat="server" DataKeyNames="productGroup" 
        onrowdatabound="GV1_RowDataBound">
        <Columns>
            <asp:TemplateField>

                <ItemTemplate>
                    <asp:ObjectDataSource ID="ODS2" runat="server">
                    </asp:ObjectDataSource>
                    <asp:GridView ID="GV2" runat="server">
                    </asp:GridView>
                </ItemTemplate>

            </asp:TemplateField>
        </Columns>
    </asp:GridView>
注意使用数据键保存产品组详细信息

显然,您需要配置对象数据源,并根据需要将它们连接到GridView


这是从使用SQL数据源概述嵌套GridView改编而来的,但页面生命周期应该是相同的。

希望以下内容有所帮助

ASPX页面:

    <asp:ObjectDataSource ID="ODS1" runat="server"></asp:ObjectDataSource>
    <asp:GridView ID="GV1" runat="server" DataKeyNames="productGroup" 
        onrowdatabound="GV1_RowDataBound">
        <Columns>
            <asp:TemplateField>

                <ItemTemplate>
                    <asp:ObjectDataSource ID="ODS2" runat="server">
                    </asp:ObjectDataSource>
                    <asp:GridView ID="GV2" runat="server">
                    </asp:GridView>
                </ItemTemplate>

            </asp:TemplateField>
        </Columns>
    </asp:GridView>
注意使用数据键保存产品组详细信息

显然,您需要配置对象数据源,并根据需要将它们连接到GridView

这是从使用SQL数据源概述嵌套GridView改编而来的,但页面生命周期应该是相同的