none
GridView2 dentro do Gridview1 Pegar valor de coluna Gridview2 RRS feed

  • Pergunta

  • Boa noite a todos,

    Pesquisei muito na Web antes de pedir a ajuda!

    Tenho dois GridView, o meu Gridview2 é um template como eu faço para pegar o valor de uma coluna?

    Eu sei que pelo jeito tradicional tem o evento

    GridView2_SelectedIndexChanged (fiz manualmente) e coloquei no meu GridView onselectindexchanged="GridView2_SelectedIndexChanged"

    e seleciono a coluna desse jeito GridView2.SelectdRow.Cells[1].Text

    mais no code-behind diz que meu Gridview2 não existe!

    Desde já muito Obrigado!

    • Editado Marcio Camargo quinta-feira, 21 de novembro de 2013 02:07 Erro de Digitação
    quinta-feira, 21 de novembro de 2013 01:24

Respostas

  • Marcio olha este exemplo eu leio a linha 0 da celula 0 do meu grid dentro do meu outro grid carrego ele no RowCommand e ja leio na string chamada teste o valor da linha 0 da coluna 0 

     protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridView grid = (GridView)GridView1.Rows[index].FindControl("GridView2");
    
                var lista2 = new List<Grid>();
    
                for (int i = 0; i < 3; i++)
                {
                    lista2.Add(new Grid { Nome = "Daniel" + i, numero = i });
                }
    
                grid.DataSource = lista2;
                grid.DataBind();
    
                string teste = grid.Rows[0].Cells[0].Text;
    
                var a = teste;
            }

    quinta-feira, 21 de novembro de 2013 11:38

Todas as Respostas

  • Onde está o codigo aspx seu grid2 é um item template ?
    quinta-feira, 21 de novembro de 2013 01:58
  • Muito Obrigado por responder!

    Segue o código

    <asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns="False" CellPadding="4"
                        CssClass="Grid" DataKeyNames="CustomerID" ForeColor="#333333" GridLines="None"
                        OnRowDataBound="OnRowDataBound" Width="289px">
                        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                        <Columns>
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <img alt="" style="cursor: pointer" src="images/plus.png" />
                                    <asp:Panel ID="pnlOrders" runat="server" Style="display: none">
                                        <asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false" CssClass="ChildGrid" onselectedindexchanged="GridView2_SelectedIndexChanged">
                                            <Columns>
    
                                                <asp:TemplateField ShowHeader="False">
                                                    <ItemTemplate>
                                                        <asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" 
                                                            CommandName="Select" ImageUrl="~/Styles/Cute-Ball-Go-icon.png" Text="Select" />
                                                    </ItemTemplate>
                                                    <ControlStyle Height="25px" Width="25px" />
                                                </asp:TemplateField>
                                                <asp:BoundField DataField="OrderId" HeaderText="cd" ItemStyle-Width="20px" />
                                                <asp:BoundField DataField="OrderDate" HeaderText="Empresa" ItemStyle-Width="450px" />
                                                <asp:BoundField DataField="RequiredDate" HeaderText="Date" ItemStyle-Width="50px" />
                                            </Columns>
                                        </asp:GridView>
                                    </asp:Panel>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:BoundField DataField="CustomerID" HeaderText="cd" ItemStyle-Width="20px" />
                            <asp:BoundField DataField="CompanyName" HeaderText="nmFantasia" ItemStyle-Width="350px">
                                <ItemStyle Width="350px" />
                            </asp:BoundField>
                            <asp:BoundField DataField="TotalOrders" HeaderText="Qtd" ItemStyle-Width="150px">
                                <ItemStyle Width="20px" />
                            </asp:BoundField>
                        </Columns>
                        <EditRowStyle BackColor="#999999" />
                        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                        <SortedAscendingCellStyle BackColor="#E9E7E2" />
                        <SortedAscendingHeaderStyle BackColor="#506C8C" />
                        <SortedDescendingCellStyle BackColor="#FFFDF8" />
                        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
                    </asp:GridView>


    quinta-feira, 21 de novembro de 2013 02:12
  • Para ler dados de seu grid como item template e assim altere para a linha e coluna que desejar

     GridView grid = (GridView)gvCustomers.Rows[0].Cells[0].FindControl("gvOrders");
    sua variave grid estara com todos os dados como uma grid mesmo!


    quinta-feira, 21 de novembro de 2013 02:31
  • Bom dia Daniel,

    Tentei do jeito que você mencionou arrumando para pegar o valor da linha e da coluna que eu quero, mais a variavel (grid) está armazenando o valor System.Web.UI.WebControls.GridView

    Tentei também desse jeito mais não funcionou também

    GridView grid = (GridView)gvCustomers.SelectedRow.Cells[1].FindControl("gvOrders");

    Tive esse tipo de exceção {"Referência de objeto não definida para uma instância de um objeto."}

    Desde já muito Obrigado!

    quinta-feira, 21 de novembro de 2013 11:02
  • Marcio olha este exemplo eu leio a linha 0 da celula 0 do meu grid dentro do meu outro grid carrego ele no RowCommand e ja leio na string chamada teste o valor da linha 0 da coluna 0 

     protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridView grid = (GridView)GridView1.Rows[index].FindControl("GridView2");
    
                var lista2 = new List<Grid>();
    
                for (int i = 0; i < 3; i++)
                {
                    lista2.Add(new Grid { Nome = "Daniel" + i, numero = i });
                }
    
                grid.DataSource = lista2;
                grid.DataBind();
    
                string teste = grid.Rows[0].Cells[0].Text;
    
                var a = teste;
            }

    quinta-feira, 21 de novembro de 2013 11:38