首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >aspxgridview从父级获取MasterRowKeyValue

aspxgridview从父级获取MasterRowKeyValue
EN

Stack Overflow用户
提问于 2010-09-15 03:02:36
回答 2查看 5.9K关注 0票数 0

我正在尝试将网格嵌套在网格中。

要填充最内部的网格,我需要来自网格的直接父级和网格父级的父级的KeyValue。

如何从最外部的父级中检索MasterRowKeyValue?

我嵌套了3个网格,如下所示:

代码语言:javascript
复制
<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设置如下:

代码语言:javascript
复制
odsParentsChildren.SelectParameters["parentid"].DefaultValue = ((ASPxGridView)sender).GetMasterRowKeyValue().ToString();

对于最内部(第二个)嵌套的网格,我需要将我的一个参数设置为最外部网格的MasterRowKeyValue。

类似于:

代码语言:javascript
复制
odsParentsChildrenRoles.SelectParameters["childid"].DefaultValue = ((ASPxGridView)sender).GetMasterRowKeyValue().ToString();
odsParentsChildrenRoles.SelectParameters["parentid"].DefaultValue = ((ASPxGridView)sender).Master.GetMasterRowKeyValue().ToString();

我该如何实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-15 22:56:46

如果您确定了已处理详细信息的主ASPxGridView实例,则可以执行此操作。这可以使用以下代码来完成:

代码语言:javascript
复制
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();
    }
票数 2
EN

Stack Overflow用户

发布于 2014-05-29 19:37:15

另一个可能的版本

代码语言:javascript
复制
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();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3712051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档