我正在尝试将网格嵌套在网格中。
要填充最内部的网格,我需要来自网格的直接父级和网格父级的父级的KeyValue。
如何从最外部的父级中检索MasterRowKeyValue?
我嵌套了3个网格,如下所示:
<dxwgv:ASPxGridView ID="gridParents" runat="server" ObjectDataSource="odsParents" KeyFieldName="ParentId">
<SettingsDetail ShowDetailRow="true" />
<Columns>
<dx:GridViewDataColumn FieldName="ParentIdId" Visible="false" />
<dx:GridViewDataColumn FieldName="Title" />
</Columns>
<Templates>
<DetailRow>
<dxwgv:ASPxGridView ID="gridParentsChilren" runat="server" ObjectDataSource="odsParentsChildren" KeyFieldName="ChildId" OnBeforePerformDataSelect="gridParentsChilren_DataSelect">
<SettingsDetail ShowDetailRow="true" IsDetailGrid="true" />
<Columns>
<dx:GridViewDataColumn FieldName="ChildId" Visible="false" />
<dx:GridViewDataColumn FieldName="Title" />
</Columns>
<Templates>
<dxwgv:ASPxGridView ID="gridParentsChilrenRoles" runat="server" ObjectDataSource="odsParentsChildrenRoles" KeyFieldName="RoleId" OnBeforePerformDataSelect="gridParentsChilrenRoles_DataSelect">
<SettingsDetail ShowDetailRow="true" IsDetailGrid="true" />
<Columns>
<dx:GridViewDataColumn FieldName="RoleId" Visible="false" />
<dx:GridViewDataColumn FieldName="Title" />
</Columns>
</dxwgv:ASPxGridView>
</Templates>
</dxwgv:ASPxGridView>
</DetailRow>
</Templates>
</dxwgv:ASPxGridView>
<asp:ObjectDataSource id="odsParents" runat="server" SelectMethod="GetParents" />
<asp:ObjectDataSource id="odsParentsChildren" runat="server" SelectMethod="GetParentsChildren">
<SelectParameters>
<asp:Parameter Name="parentid" Type="Object" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:ObjectDataSource id="odsParentsChildrenRoles" runat="server" SelectMethod="GetParentsRoles">
<SelectParameters>
<asp:Parameter Name="childid" Type="Object" />
<asp:Parameter Name="parentid" Type="Object" />
</SelectParameters>
</asp:ObjectDataSource>当为第一个细节网格调用OnBeforePerformDataSelect时,我将选择参数DefaultValue设置如下:
odsParentsChildren.SelectParameters["parentid"].DefaultValue = ((ASPxGridView)sender).GetMasterRowKeyValue().ToString();对于最内部(第二个)嵌套的网格,我需要将我的一个参数设置为最外部网格的MasterRowKeyValue。
类似于:
odsParentsChildrenRoles.SelectParameters["childid"].DefaultValue = ((ASPxGridView)sender).GetMasterRowKeyValue().ToString();
odsParentsChildrenRoles.SelectParameters["parentid"].DefaultValue = ((ASPxGridView)sender).Master.GetMasterRowKeyValue().ToString();我该如何实现这一点?
发布于 2010-09-15 22:56:46
如果您确定了已处理详细信息的主ASPxGridView实例,则可以执行此操作。这可以使用以下代码来完成:
protected void ASPxGridView1_BeforePerformDataSelect(object sender, EventArgs e) {
ASPxGridView subDetail = sender as ASPxGridView;
GridViewDetailRowTemplateContainer container = subDetail.NamingContainer as GridViewDetailRowTemplateContainer;
ASPxGridView detail = container.Grid;
odsParentsChildrenRoles.SelectParameters["parentid"].DefaultValue = detail.GetMasterRowKeyValue();
}发布于 2014-05-29 19:37:15
另一个可能的版本
protected void gvMyGridView_BeforePerformDataSelect(object sender, EventArgs e)
{
var gvMyGridView = sender as ASPxGridView;
var parentRow = gvMyGridView.NamingContainer as GridViewDetailRowTemplateContainer;
odsChildDataSource.SelectParameters["Id"].DefaultValue = parentRow .KeyValue.ToString();
}https://stackoverflow.com/questions/3712051
复制相似问题