none
Filtrar uma GridView que utiliza ObjectDataSource RRS feed

  • Pergunta

  • Olá camaradas,

    Negócio é o seguinte... eu tenho uma GridView populada por um ObjectDataSource que trás um metodo de selecionar de uma camada de acesso à dados.

    Porém estou com dificuldade para filtrar estes dados, gostaria de utilizar uma TextBox e um Button para envio dos parâmetros.

    Com SqlDataSource eu tinha facilidade para filtrar, e ainda podia dar ao usuário a possibilidade de escolher por qual coluna ele gostaria de filtrar os resultados, mas estou encontrando dificuldades ao utilizar o ObjectDataSource.

    Agradeço desde já a ajuda de vocês! Abraços

    terça-feira, 25 de setembro de 2012 19:12

Todas as Respostas

  • cara eu não sei se é a melhor forma, mas quando trabalhei com grid view e data source eu usava um dto para popular o objectdatasource então eu filtrava esse dto, e cada vez que eu precisasse filtrar ou ordenar algo ordenava ou filtrava o dto e jogava no datasource.... não sei se me fiz entender :P
    quarta-feira, 26 de setembro de 2012 10:51
  • Bom dia, Augusto. 

    Segue o código .aspx 

    <asp:textbox id="Textbox1" runat="server" text="Nancy Davolio" />
    
            <asp:gridview
              id="GridView1"
              runat="server"
              datasourceid="ObjectDataSource1"
              autogeneratecolumns="False">
              <columns>
                <asp:boundfield headertext="ID" datafield="EmpID" />
                <asp:boundfield headertext="Name" datafield="FullName" />
                <asp:boundfield headertext="Street Address" datafield="Address" />
              </columns>
            </asp:gridview>
    
            <!-- Security Note: The ObjectDataSource uses a FormParameter,
                 Security Note: which does not perform validation of input from the client. -->
    
            <asp:objectdatasource
              id="ObjectDataSource1"
              runat="server"
              selectmethod="GetAllEmployeesAsDataSet"
              typename="Samples.AspNet.CS.EmployeeLogic"
              filterexpression="FullName='{0}'" OnFiltering="ObjectDataSource1_Filtering">
                <filterparameters>
                  <asp:formparameter name="FullName" formfield="Textbox1" defaultvalue="Nancy Davolio" />
                </filterparameters>
            </asp:objectdatasource>
    
            <p><asp:button id="Button1" runat="server" text="Search" /></p>

    já no seu arquivo .cs ou na própria página :

     protected void ObjectDataSource1_Filtering(object sender, ObjectDataSourceFilteringEventArgs e)
        {
            if (Textbox1.Text == "")
            {
                e.ParameterValues.Clear();
                e.ParameterValues.Add("FullName", "Nancy Davolio");
            }
        }

    Sugiro que de uma lida nos Links abaixo :

    http://www.israelaece.com/post/Parametro-customizado-em-controles-DataSource.aspx

    http://msdn.microsoft.com/pt-br/library/system.web.ui.webcontrols.objectdatasource.filterparameters.aspx

    http://www.aspnettutorials.com/tutorials/controls/objectdatasource-cs.aspx


    Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com

    quarta-feira, 26 de setembro de 2012 11:28
  • Agradeço a ajuda de vocÊs!

    Mas meu método de popular a Gridview não é um DataTable nem um DataSet, e toda vez que uso esses FilterParams ele diz que só aceita dessa maneira.. meu método retorna uma lista de Fornecedores ( no caso ).

    E agora José? :(

    quarta-feira, 26 de setembro de 2012 20:20