从嵌套的网格视图中获取网格视图数据键

本文关键字:网格 视图 数据 获取 嵌套 | 更新日期: 2023-09-27 18:24:57

我有一个嵌套在另一个网格视图中的网格视图。我需要的是在内部网格视图上从外部网格视图获取DataKey。我怎样才能通过它?

谢谢。

更新

<asp:GridView ID="gvPeople" runat="server" AutoGenerateColumns="false" CssClass="Grid" DataKeyNames="person_id" OnRowDataBound="gvPeople_RowDataBound">
            <Columns>
                <asp:TemplateField HeaderStyle-Width="10px" ItemStyle-HorizontalAlign="Center">
                    <ItemTemplate>
                        <img alt = "" style="cursor: pointer" src="images/glyphicons/png/glyphicons_236_zoom_in.png" />
                        <asp:Panel ID="pnlOrders" runat="server" Style="display: none">
                            <asp:GridView ID="gvDocuments" runat="server" AutoGenerateColumns="false" CssClass = "ChildGrid" DataKeyNames="document_id" ShowFooter="true" 
                                OnRowCommand="gvDocuments_RowCommand" OnRowDataBound="gvDocuments_RowDataBound" OnRowDeleted="gvDocuments_RowDeleted" OnRowDeleting="gvDocuments_RowDeleting"
                                GridLines="Horizontal" >
                                <Columns>
                                    <asp:BoundField ItemStyle-Width="150px" DataField="document_date" HeaderText="Document Date"  />
                                    <asp:BoundField ItemStyle-Width="100px" DataField="value" HeaderText="Value" DataFormatString="{0:#,##.00 €}" />
                                    <asp:TemplateField HeaderText="">
                                        <ItemTemplate>
                                            <asp:Button runat="server" ID="delbutton" CommandArgument='<%# Eval("document_id") %>' CommandName="Delete" Text="Delete" />
                                            &nbsp;
                                            <asp:Button runat="server" ID="editbutton" CommandArgument='<%# Eval("document_id") %>' Text="Edit" UseSubmitBehavior="false" />
                                        </ItemTemplate>
                                        <FooterTemplate>
                                            <asp:Button runat="server" ID="newdoc" CommandName="New" Text="New Document" UseSubmitBehavior="false" />
                                        </FooterTemplate>
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>
                        </asp:Panel>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField ItemStyle-Width="150px" DataField="name" HeaderText="Name" />
                <asp:BoundField ItemStyle-Width="150px" DataField="ndocs" HeaderText="Nº of Documents" />
                <asp:BoundField ItemStyle-Width="150px" DataField="total_cost" HeaderText="Total Cost" DataFormatString="{0:#,#0.00 €}" />
            </Columns>
        </asp:GridView>

这是我的aspx代码,它正在运行,其中包括运行javascript按钮的新文档按钮作为编辑按钮,但在这个按钮上,我需要从gvPeople行传递person_id,所以当我创建一个新的gvDocuments行时,它会到达那个人id。

谢谢。

从嵌套的网格视图中获取网格视图数据键

只需投入使用即可。

在具有我想要的值的子网格视图之前添加一个隐藏字段。在子网格视图的RowDataBound上,添加了以下内容:

string str= ((HiddenField)e.Row.Parent.Parent.Parent.FindControl("hf")).Value.ToString();

现在,对我想要的任何东西都使用str值。

您需要首先访问父网格视图行中的每一个,然后访问子网格视图行,然后访问数据键。

示例:

foreach (GridViewRow rowPeople in gvPeople.Rows)
{
    GridView gvDocuments = (GridView)rowPeople.FindControl("gvDocuments");
    //this will get you the outer/parent gridview datakeys
    gvDocuments.DataKeys[rowPeople.RowIndex].Values[0].ToString();
    foreach (GridViewRow rowDocuments in gvDocuments.Rows)
    {
        //this will get you the inner/child gridview datakeys
        gvDocuments.DataKeys[rowDocuments.RowIndex].Values[0].ToString();
    }
}

如果这对你有用,请告诉我!