none
Iniciante - ObjectDataSource Filtros Checkbox RRS feed

  • Pergunta

  • Bom dia,

    Estou começando a utilizar o ObjectDataSource (utilizava o SQLDataSource), e preciso fazer uma filtragem de dados. Pelo que entendi, o ObjectDS só pode passar por parametros o que irá na cláusula Where, mas eu preciso filtrar pelo  checkbox.

     

    Ou seja:

    Meu SQL está algo do tipo:

    Select * from usuarios where status = @status.

     

    Com o checkbox, gostaria que status pudesse ser 1, 2 ou 3 ou todos (caso nenhum check estivesse selecionado)


    Então o SQL deveria ficar:

    Select * from usuarios where status = 1 OR status = 2 OR status = 3 (caso não tivesse o 3º check selecionado, ficaria só "Where Status = 1 OR status = 2")

     

    Como eu posso fazer isso via ObjectDataSource? Pois preciso mexer no SQL em tempo de execução.

     

    Grato desde já.

    quarta-feira, 17 de novembro de 2010 13:41

Respostas

  • Olá,

    Você pode incluir a Query como parâmetro do metodo que irá retornar os dados para o ObjectDataSource:

    Exemplo de método que recebe a query:

     

    public List<seuObjeto> ObterSeusObjectos(int parametro1, string SQL)
    {
    
    }
    

     

    Feito isto, você deve atualizar a referência do metodo no ObjectDataSource no ASPX, para que ele reconheça o novo parâmetro (Para isto basta abrir o ASPX e clicar em ConfigureDataSource após clicar na seta para direita exibida no ObjectDataSource).

    Ao contrário dos outros parâmetro este não será preenchido por um controle ou um valor armazenado em SESSÃO, sendo assim, você de usar o evento Selecting do ObjectDataSource para passar este parâmetro:

     

     

     

     protected void SeuObjectDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
      {
       string sql;
       if (SeuCheckBox.Checked)
       {
        sql = "Select * from usuarios where status = 1 OR status = 2 OR status = 3";
       }
       else
       {
        sql = "Select * from usuarios where status = 1 OR status = 2";
       }
    
       e.InputParameters["SQL"] = sql;
      }
    

     

    Repare que o mais importante aqui é onde você passa a consulta SQL para seu ObjectDataSource:

    e.InputParameters["SQL"] = sql;
    

    Internamente no seu método você pode atribuir este parâmetro (SQL), como o CommandText de um Command se você tiver usando o ADO.NET por exemplo.

    Espero ter ajudado.

     


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    • Sugerido como Resposta Marcus Paulo Couto quinta-feira, 18 de novembro de 2010 17:53
    • Marcado como Resposta Nauro Jr sexta-feira, 19 de novembro de 2010 10:50
    quarta-feira, 17 de novembro de 2010 15:24

Todas as Respostas

  • Olá,

    Você pode incluir a Query como parâmetro do metodo que irá retornar os dados para o ObjectDataSource:

    Exemplo de método que recebe a query:

     

    public List<seuObjeto> ObterSeusObjectos(int parametro1, string SQL)
    {
    
    }
    

     

    Feito isto, você deve atualizar a referência do metodo no ObjectDataSource no ASPX, para que ele reconheça o novo parâmetro (Para isto basta abrir o ASPX e clicar em ConfigureDataSource após clicar na seta para direita exibida no ObjectDataSource).

    Ao contrário dos outros parâmetro este não será preenchido por um controle ou um valor armazenado em SESSÃO, sendo assim, você de usar o evento Selecting do ObjectDataSource para passar este parâmetro:

     

     

     

     protected void SeuObjectDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
      {
       string sql;
       if (SeuCheckBox.Checked)
       {
        sql = "Select * from usuarios where status = 1 OR status = 2 OR status = 3";
       }
       else
       {
        sql = "Select * from usuarios where status = 1 OR status = 2";
       }
    
       e.InputParameters["SQL"] = sql;
      }
    

     

    Repare que o mais importante aqui é onde você passa a consulta SQL para seu ObjectDataSource:

    e.InputParameters["SQL"] = sql;
    

    Internamente no seu método você pode atribuir este parâmetro (SQL), como o CommandText de um Command se você tiver usando o ADO.NET por exemplo.

    Espero ter ajudado.

     


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    • Sugerido como Resposta Marcus Paulo Couto quinta-feira, 18 de novembro de 2010 17:53
    • Marcado como Resposta Nauro Jr sexta-feira, 19 de novembro de 2010 10:50
    quarta-feira, 17 de novembro de 2010 15:24
  • Funcionou sim, muito obrigado!
    sexta-feira, 19 de novembro de 2010 10:50