我有2个GridView,InnerGridView嵌套在我的OuterGridView的TemplateField中。 每个GridView都有一个ObjectDataSource(ODS)。我希望InnerGridView显示唯一的数据 到OuterGridView中列出的GroupName。我已经谷歌搜索了几个星期, 看到基于RowDataBound和ODS选择事件的各种想法。
我不认为RowDataBound是答案,因为InnerGridView ODS的Selecting事件 在为OuterGridView调用RowDataBound时已经调用过。
所以,我需要向ODS发送一个参数给InnerGridView:
protected void ProductDataSource_Selecting( object sender, ObjectDataSourceSelectingEventArgs e ) {
e.InputParameters["productGroup"] = <here I need to access the GroupName from the OuterGridView>;
}
注意:此方法分配给InnerGridView ODS的Selecting事件。
我的问题是:当我处理InnerGridView时,如何从OuterGridView访问GroupName。 这是一个不起作用的例子:OuterGridView.SelectedRow.FindControl(“GroupName”).ToString();
我听说可以通过搜索某个层次结构从Selecting事件中找到任何控件。 但我不知道如何使用“e”或“sender”parms访问该层次结构。 如果我能找到各种对象和控件的解释......以及它们具有有效范围的位置 以及他们如何被访问...这将是有帮助的。
非常感谢,保罗
答案 0 :(得分:0)
如果您将发送方对象强制转换为gridview对象,那么请使用此处的SelectedRow并获取组名?
答案 1 :(得分:0)
如果要将内部GridView与外部GridView的GroupName绑定,请执行以下步骤
1)if(!IsPostBack)绑定外部GridView。 2)在外部GridViews RowDataBound事件中通过检查条件查找内部GridView if(e.Row.RowType == DataControlRowType.DataRow) { DataRowView drv =((DataRowView)e.Row.DataItem); GridView InnerGridView =(GridView)e.Row.FindControl(“InnerGridView”); if(InnerGridView!= null) { string GroupName = drv [“GroupName”]; //获取GropName。 InnerGridView.DataSource =“查询WRT组名”; InnerGridView.DataBind(); } }
答案 2 :(得分:0)
希望以下帮助
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>
代码背后:
protected void GV1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
string productgroup = ((GridView)sender).DataKeys[e.Row.RowIndex]["productGroup"].ToString();
ObjectDataSource objDS = (ObjectDataSource)e.Row.FindControl("ODS2");
objDS.SelectParameters["productGroup"].DefaultValue = productgroup;
}
}
请注意使用数据键来保存产品组详细信息。
显然,您需要配置对象数据源,并根据需要将它们连接到网格视图。
这是使用SQL数据源从this article概述嵌套网格视图改编的,但页面生命周期应该相同。