Usar o FilterExpression do SqlDataSrouce na GridView
Se quiser dar a possibilidade do utilizador filtrar os dados que está a ver na gridview, uma das formas é usar o FilterExpression do SqlDataSource ligado à gridview.
Algo do genero:
if(!string.IsNullOrEmpty(txtFiltro.Text.Trim()))
{
sqlDsTeste.FilterExpression = String.Format(“nome like ‘%{0}%’”, txtFiltro.Text);
}
else
{
sqlDsTeste.FilterExpression = “”;
}
O problema está quando o filtro retorna por exemplo um nº de resultados que seja superior ao definido para mostrar por página, fazendo com que ao mudar de página o filtro seja “esquecido” devido ao PostBack e mostre novamente todos os resultados da query no SelectCommand do SqlDataSource.
Para contornar isto usei o ViewState e adicionei após definir a FilterExpression o seguinte:
</span>
{
sqlDsTeste.FilterExpression = ViewState[“filtro”].ToString();
}
</span></div>
Se conhecerem uma forma mais rápida e/ou correcta avisem 🙂