简体   繁体   中英

Find the Gridview control from another Gridview Control

HTMl:-<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" DataKeyNames="BillOfLadingID" AutoGenerateColumns="false">
                <Columns>
                    <asp:BoundField ItemStyle-Width="300px" DataField="BillOfLadingID" HeaderText="B/L Number" HeaderStyle-CssClass="GridClass" />
                    <asp:TemplateField HeaderText="Select" ItemStyle-VerticalAlign="Middle" ItemStyle-HorizontalAlign="Center">
                        <ItemTemplate>
                            <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" >
                                <Columns>
                                    <asp:BoundField ItemStyle-Width="300px" DataField="ContainerType" HeaderText="Container Type" HeaderStyle-CssClass="GridClass" />
                                    <asp:BoundField ItemStyle-Width="300px" DataField="NumberOfContainer" HeaderText="Number Of Container" HeaderStyle-CssClass="GridClass" />
                                    <asp:TemplateField HeaderText="Select" ItemStyle-VerticalAlign="Middle" ItemStyle-HorizontalAlign="Center">
                                        <ItemTemplate>
                                            <asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="false">
                                                <Columns>
                                                    <asp:BoundField ItemStyle-Width="300px" DataField="InvoiceChargesType" HeaderText="Perticulars" HeaderStyle-CssClass="GridClass" />
                                                    <asp:BoundField ItemStyle-Width="300px" DataField="PerUnit" HeaderText="Per Unit" HeaderStyle-CssClass="GridClass" />
                                                    <asp:BoundField ItemStyle-Width="300px" DataField="InvoiceINR" HeaderText="INR" HeaderStyle-CssClass="GridClass" />
                                                    <asp:BoundField ItemStyle-Width="300px" DataField="InvoiceUSD" HeaderText="USD" HeaderStyle-CssClass="GridClass" />
                                                </Columns>
                                            </asp:GridView>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>
                        </ItemTemplate>
                    </asp:TemplateField>
            </Columns>
        </asp:GridView>

C#:- protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            BLID = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();
            GridView gvOrders = e.Row.FindControl("GridView2") as GridView;
            gvOrders.DataSource = GetData(string.Format("select BookingWiseContainerTbl.ContainerType,BookingWiseContainerTbl.NumberOfContainer from BookingWiseContainerTbl,LinerBLTbl where LinerBLTbl.BookingID=BookingWiseContainerTbl.LineBookingID and LinerBLTbl.BillOfLadingID='{0}'", BLID));
            gvOrders.DataBind();

            GridView gvOrders1 = gvOrders.FindControl("GridView3") as GridView;
            gvOrders1.DataSource = GetData(string.Format("select LinerInvoiceWiseChargesTbl.InvoiceChargesType,concat(LinerInvoiceWiseChargesTbl.InvoiceCurrency,'-', LinerInvoiceWiseChargesTbl.InvoiceCharges)as PerUnit,LinerInvoiceWiseChargesTbl.InvoiceINR,LinerInvoiceWiseChargesTbl.InvoiceUSD  from LinerBLTbl,LinerInvoiceWiseChargesTbl  where LinerBLTbl.BillOfLadingID=LinerInvoiceWiseChargesTbl.InvoiceBillOfLadingID and LinerBLTbl.BillOfLadingID='" + BLID + "'"));
            gvOrders1.DataBind();
        }
    }

I am using three gridview. In Template Field form another gridview. Now I am trying to bind all gridview data on GridView1 onrowdatabound, I got the gridview2 id on gridview1 on rowdatabound but not gridview3.

How to find the Gridview3 control on gridview1 rowdatabound. I try this but gvOrders1 is showing null. How to solve this?

You will require to use RowDataBound event of GridView2 to bind GridView3 since GridView3 is nested one to it. Here is a sort of similar code:

<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" DataKeyNames="BillOfLadingID" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField ItemStyle-Width="300px" DataField="BillOfLadingID" HeaderText="B/L Number" HeaderStyle-CssClass="GridClass" />
        <asp:TemplateField HeaderText="Select" ItemStyle-VerticalAlign="Middle" ItemStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView2_RowDataBound">
                    <Columns>
                        <asp:BoundField ItemStyle-Width="300px" DataField="ContainerType" HeaderText="Container Type" HeaderStyle-CssClass="GridClass" />
                        <asp:BoundField ItemStyle-Width="300px" DataField="NumberOfContainer" HeaderText="Number Of Container" HeaderStyle-CssClass="GridClass" />
                        <asp:TemplateField HeaderText="Select" ItemStyle-VerticalAlign="Middle" ItemStyle-HorizontalAlign="Center">
                            <ItemTemplate>
                                <asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="false">
                                    <Columns>
                                        <asp:BoundField ItemStyle-Width="300px" DataField="InvoiceChargesType" HeaderText="Perticulars" HeaderStyle-CssClass="GridClass" />
                                        <asp:BoundField ItemStyle-Width="300px" DataField="PerUnit" HeaderText="Per Unit" HeaderStyle-CssClass="GridClass" />
                                        <asp:BoundField ItemStyle-Width="300px" DataField="InvoiceINR" HeaderText="INR" HeaderStyle-CssClass="GridClass" />
                                        <asp:BoundField ItemStyle-Width="300px" DataField="InvoiceUSD" HeaderText="USD" HeaderStyle-CssClass="GridClass" />
                                    </Columns>
                                </asp:GridView>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>


string BLID = string.Empty;    
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            BLID = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();
            GridView gvOrders = e.Row.FindControl("GridView2") as GridView;
            gvOrders.DataSource = GetData(string.Format("select BookingWiseContainerTbl.ContainerType,BookingWiseContainerTbl.NumberOfContainer from BookingWiseContainerTbl,LinerBLTbl where LinerBLTbl.BookingID=BookingWiseContainerTbl.LineBookingID and LinerBLTbl.BillOfLadingID='{0}'", BLID));
            gvOrders.DataBind();
        }
    }

    protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            GridView gvOrders1 = (sender as GridView).FindControl("GridView3") as GridView;
            gvOrders1.DataSource = GetData(string.Format("select LinerInvoiceWiseChargesTbl.InvoiceChargesType,concat(LinerInvoiceWiseChargesTbl.InvoiceCurrency,'-', LinerInvoiceWiseChargesTbl.InvoiceCharges)as PerUnit,LinerInvoiceWiseChargesTbl.InvoiceINR,LinerInvoiceWiseChargesTbl.InvoiceUSD  from LinerBLTbl,LinerInvoiceWiseChargesTbl  where LinerBLTbl.BillOfLadingID=LinerInvoiceWiseChargesTbl.InvoiceBillOfLadingID and LinerBLTbl.BillOfLadingID='" + BLID + "'"));
            gvOrders1.DataBind();
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM