none
filtrar dados GridView selecionando linha de outro Gridview RRS feed

  • Pergunta

  • Boa noite,

    Estou precisando de uma ajuda para filtrar os dados de um gridview ao selecionar linha em outro gridview.

    Tenho o seginte códido, mas não estou conseguindo definir o parametro select do gridview1 para filtrar o gridview dois.

    Alguém tem alguma dica.

     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
               <Columns>
                <asp:CommandField ShowSelectButton="True" />
                <asp:BoundField DataField="Localidade" HeaderText="Localidade" 
                        SortExpression="Localidade" />
                <asp:BoundField DataField="Total" HeaderText="Total" SortExpression="Total" />
              </Columns>
             </asp:GridView>
             <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:hcConnectionString %>" 
        ProviderName="<%$ ConnectionStrings:hcConnectionString.ProviderName %>" 
        SelectCommand="SELECT Localidade, COUNT(Localidade) AS Total FROM tb_importa_empregado WHERE (Unidade_Organizacional IS NULL) GROUP BY Localidade ORDER BY Localidade"></asp:SqlDataSource>
    
          
            <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
              DataSourceID="SqlDataSource2" >
              <Columns>
                <asp:BoundField DataField="Matricula" HeaderText="Matricula" ReadOnly="True" 
                  SortExpression="Matricula" />
                <asp:BoundField DataField="Nome" HeaderText="Nome" SortExpression="Nome" />
                <asp:BoundField DataField="Localidade" HeaderText="Localidade" 
                  SortExpression="Localidade" />
                <asp:BoundField DataField="Cargo" HeaderText="Cargo" SortExpression="Cargo" />
                <asp:BoundField DataField="User_Name" HeaderText="User_Name" 
                  SortExpression="User_Name" />
              </Columns>
             </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
              ConnectionString="<%$ ConnectionStrings:hcConnectionString %>" 
              ProviderName="<%$ ConnectionStrings:hcConnectionString.ProviderName %>" 
              SelectCommand="SELECT Matricula, Nome, Localidade, Cargo, User_Name FROM tb_importa_empregado WHERE (Unidade_Organizacional IS NULL and Localidade=@localidade) ORDER BY Nome">
              <FilterParameters>
                <asp:ControlParameter ControlID="GridView1" PropertyName="SelectedValue" Name="@localidade" Type="String" />
              </FilterParameters>
            </asp:SqlDataSource>

    quarta-feira, 3 de agosto de 2011 01:13

Respostas

  • Olá Frank!

    Ao que me parece, você não indicou o DataKeyNames... DataKeyNames é, digamos, uma chave para você poder (e o gridView, também) identificar o que foi selecionado...

    Vá ao Design, selecione o seu GridView e vá para as Properties... Então na propriedade DatakeyNames especifique pelo que você quer identificar a sua seleção... Por exemplo, você está pegando dados da tabela empregado, nessa propriedade então, coloque o a primary key da tabela, o idEmpregado se ele se chamar assim...

    Então, no evento SelectedIndexChanged do seu GridView, você consegue identificar através de:

    var valor = GridView1.SelectedValue;
    


     pegar qual foi o valor selecionado e realizar a filtragem do seu segundo GridView...

    Até mais, abraços.

    • Marcado como Resposta Frank Thadeu domingo, 7 de agosto de 2011 18:26
    quinta-feira, 4 de agosto de 2011 18:49
  • Era exatamente isto.

     

    Valeu!

    • Marcado como Resposta Frank Thadeu domingo, 7 de agosto de 2011 18:26
    domingo, 7 de agosto de 2011 18:26

Todas as Respostas

  • Olá Frank!

    Ao que me parece, você não indicou o DataKeyNames... DataKeyNames é, digamos, uma chave para você poder (e o gridView, também) identificar o que foi selecionado...

    Vá ao Design, selecione o seu GridView e vá para as Properties... Então na propriedade DatakeyNames especifique pelo que você quer identificar a sua seleção... Por exemplo, você está pegando dados da tabela empregado, nessa propriedade então, coloque o a primary key da tabela, o idEmpregado se ele se chamar assim...

    Então, no evento SelectedIndexChanged do seu GridView, você consegue identificar através de:

    var valor = GridView1.SelectedValue;
    


     pegar qual foi o valor selecionado e realizar a filtragem do seu segundo GridView...

    Até mais, abraços.

    • Marcado como Resposta Frank Thadeu domingo, 7 de agosto de 2011 18:26
    quinta-feira, 4 de agosto de 2011 18:49
  • Era exatamente isto.

     

    Valeu!

    • Marcado como Resposta Frank Thadeu domingo, 7 de agosto de 2011 18:26
    domingo, 7 de agosto de 2011 18:26