Como fazer uma busca em tabela

Boa tarde pessoal.

Estou precisando aplicar no meu projeto uma busca em minha tabela, sendo que não está funcionando. A a tabela é dinâmica, montada do lado servidor.

Veja um trecho da montagem da tabela:

protected string montarBody(Indicador indicador) { StringBuilder htmlDivsConteudoRelatorio = new StringBuilder();

    htmlDivsConteudoRelatorio.Append("<tr class='indicador'>");
    htmlDivsConteudoRelatorio.Append("<td class='larguraColuna info-sigla'>" + indicador.sigla + "</td>");
    htmlDivsConteudoRelatorio.Append("<td class='info-descricao'>" + indicador.nome + "</td>");
    htmlDivsConteudoRelatorio.Append("</tr>");

    return htmlDivsConteudoRelatorio.ToString();

}

Na classe aspx , veja:

Busca:

E no javaScript:

var campoFiltro = document.querySelector("#filtrar-tabela");

campoFiltro.addEventListener("input", function () {
    var siglas = document.querySelectorAll(".indicador");

    if (this.value.length > 0) {
        for (var i = 0; i < siglas.length; i++) {
            var sigla = siglas[i];
            var tdSigla = sigla.querySelector(".info-sigla");
            var nome = tdSigla.textContent;
            var expressao = new RegExp(this.value, "i");

            if (!expressao.test(nome)) {
                sigla.classList.add("invisivel");
            } else {
                sigla.classList.remove("invisivel");
            }
        }
    } else {
        for (var i = 0; i < siglas.length; i++) {
            var sigla = siglas[i];
            sigla.classList.remove("invisivel");
        }
    }
});

Ao realizar os testes o filtro não funciona. Estou fazendo algo de errado?

Obrigada. Flávia

Ainda não consegui, se alguém puder me ajudar ficarei muito grata.

Olá @Flavia1!

Eu não olhei o código, mas ve se isso aqui te ajuda:

https://datatables.net/examples/styling/bootstrap4

É uma solução completa para filtro, ordenação, paginação, etc para tabelas. Basta importar os arquivos e referenciar a sua tabela que já funciona.

O link que postei foi para tabela que usa bootstrap4, mas tem sem bootstrap também

https://datatables.net/examples/styling/no-classes.html

Olá Mike.

Dei uma olhada no link que me passou, sendo que não me atende pois não estou trabalhando com DataTable.

O meu grande problema é que estou montando a tabela do lado servidor(.css) e quando faço a busca estou do lado cliente, sendo assim não sei como recarregar a tabela montada no servidor de acordo com os dados do filtro. Não sei se isso é possível.

Obrigada.
Flávia

O DataTable seria a tag table do html, você esta utilizando ela, não esta?

A tabela esta populada com os dados do servidor e ai você utiliza o filtro para achar o registro x, certo? Se sim, o link que te passei te ajudará

Mike.
Se puder dê uma olhada no meu código. Não tenho html, pois o projeto está todo em aspx. Montei a tabela do lado servidor e no cliente tenho uma combo que ao trocar o item a tabela é carregada de acordo com o item selecionado.
Sendo que na minha ideia para fazer a busca , o cliente deve clicar no text da busca, digitar o valor e quando o valor for digitado a tabela deve ser novamente recarregada de acordo com dados do filtro.
Não sei se seria assim, sou iniciante na área.

Obrigada.
Flávia

Oi Mike.

Tem um código com jquery que facilita fazer esta busca, veja:

$(document).ready(function () {
$("#txtBusca").on(“keyup”, function () {
var value = $(this).val().toLowerCase();
$("#tabela tr").filter(function () {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});

Estou querendo testar, sendo que não entra na função ready. Não sei o que está ocorrendo.

Obrigada.
Flávia

Tem o HTML no browser gerado pelo seu aspx. Isso ajuda quem for te ajudar.