none
Nao consigo filtrar dados com Dataview.RowFilter RRS feed

  • Pergunta

  • Estou tentando filtrar dados com o DataView, não filtra de jeito nenhum. Olha só o esquema q eu fiz:

     

    Evento Load do Form:

     

    Code Snippet

    private void Login_Load(object sender, EventArgs e)

    {

    con = new SqlConnection(Properties.Settings.Default.SistemaBDConnectionString);

    cmd = new SqlCommand();

    cmd.Connection = con;

    cmd.CommandText = "Dadosusuario";

    cmd.CommandType = CommandType.StoredProcedure;

    ds = new DataSet();

    da = new SqlDataAdapter(cmd);

    da.Fill(ds);

    }

     

     

    a stored procedure Dadosusuario:

     

    Code Snippet

    ALTER PROCEDURE dbo.Dadosusuario

    AS

    BEGIN

    SET NOCOUNT ON

    SELECT * FROM USUARIO

    SELECT * FROM DADOSUNIDADE

    END

     

     

    eu quero que os dados sejam filtrados quando o usuario apertar TAB, entao coloquei o código no evento Leave do Textbox txtCodUsuario:

     

    Code Snippet

    private void txtCodUnidade_Leave(object sender, EventArgs e)

    {

    if (txtCodUnidade.Text.Trim() != "")

    {

    DataView dv = new DataView();

    dv = ds.Tables[1].DefaultView;

    dv.RowFilter = "CodUnidade = '" + txtCodUnidade.Text + "'";

    if (dv.Table.Rows.Count != 0)

    {

    txtUnidade.Text = dv.Table.Rows[0]["NomeUnidade"].ToString();

    }

    else

    {

    MessageBox.Show("Código de Unidade Errado!");

    txtCodUnidade.Text = "";

    txtCodUnidade.Focus();

    }

    }

    else

    {

    MessageBox.Show("Digite o Cógido da Unidade no Campo.");

    txtCodUnidade.Focus();

    }

    }

     

     

    Me ajudem, pq não está filtrando (não existe dois "CodUnidade" iguais do BD), qual é o problema do meu codigo-fonte?
    quinta-feira, 13 de março de 2008 19:06

Todas as Respostas

  • Isso é uma aplicação windows ou asp.net???

    segunda-feira, 17 de março de 2008 18:41
    Moderador
  • Apos o filtro no DataView tenta atribuir o mesmo ao DataSource do seu grid

     

    segunda-feira, 17 de março de 2008 18:42
    Moderador
  • a minha aplicação é windows forms e eu não grid nesse caso, eu carreguei um dataset com os dados de duas SELECT numa Stored Procedure na hora q a janela é carregada, Eu quero filtrar os dados do dataset p num ter fazer outra busca no BD, não usando o esquema q eu coloquei acima, num deu certo. Pq será?

    terça-feira, 18 de março de 2008 19:07
  •  

    Grande,

     

     

    Arruma essa linha no seu codigo

    Code Snippet

    DataView dv = new DataView();

    dv = ds.Tables[1].DefaultView;

     

     

    Troca para

    Code Snippet

    DataView dv = new DataView();

    dv = ds.Tables[0].DefaultView;

     

     

     

    quarta-feira, 19 de março de 2008 20:14
    Moderador
  • nao serve, pq a tabela q eu quero tem o indice [1], é o segundo SELECT da Stored Procedure q eu criei.

     

    segunda-feira, 24 de março de 2008 21:37
  • Tenta rodar em debug, e veja certinho o conteudo do dataset

     

    terça-feira, 25 de março de 2008 20:54
    Moderador
  • já fiz isso, o Dataset fica com as duas tabelas das SELECT's da Stored Procedure. O rowfilter não filtra os dados (veja o código) os datatables continuam retornando todos os dados da tabela.

    quarta-feira, 26 de março de 2008 18:21
  • Amigo,

     

    Tente o seguinte:

     

    Code Snippet

    DataView dv = new DataView();

    dv = ds.Tables[1];

    dv.RowFilter = "CodUnidade = " + txtCodUnidade.Text;
    dv.RowStateFilter = DataViewRowState.ModifiedCurrent;

    // utilizar 'valor' somente para campos texto.

     

     

    DataView.RowFilter Property

    http://msdn2.microsoft.com/en-us/library/system.data.dataview.rowfilter.aspx

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

     

     

     

    quinta-feira, 27 de março de 2008 02:12
  •  

    Tentei e não funcionou, não deu certo
    quarta-feira, 2 de abril de 2008 13:48