Ir para conteúdo
Fórum Script Brasil
  • 0

Filtro em DataGridView


Bred

Pergunta

Boa noite pessoal!

pesso a ajuda de pra tentar desenrrolar um problema no meu projeto no qual tem me dado muita dor de cabeça.

tenho um cadastro de clientes onde uso um fitro para achar o nome desejado no DataGridView ate ai funciona muito bem, mas euqueria colocar um codigo no evento botão do filtro para que o mesmo valor encotrado no DataGridView fosse exibido automaticamente em umas textbox vou lhe deixar o codigo que estou usado desde já fico grato pela atenção.

Public Class Form1

Public codigo As Integer

Public nome As String

Public ip As String

Public cidade As String

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

showClientes()

End Sub

Private Sub showClientes()

DataGridView1.DataSource = BAL.ListClientes()

End Sub

Private Sub BT_filtro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_filtro.Click

If TextBox5.Text <> String.Empty Then

DataGridView1.DataSource = BAL.SearchClientes(TextBox5.Text)

End If

End Sub

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

CodigoTextBox.Text = Me.DataGridView1.Item(0, e.RowIndex).Value.ToString()

NomeTextBox.Text = Me.DataGridView1.Item(1, e.RowIndex).Value.ToString()

IpTextBox.Text = Me.DataGridView1.Item(2, e.RowIndex).Value.ToString()

CidadeTextBox.Text = Me.DataGridView1.Item(3, e.RowIndex).Value.ToString()

End Sub

End Class

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Bred,

não manjo muito de VB, mas tenta usar um BindingSource que é pelo menos pra mim é melhor manipular filtro, tipo assim:

Imports System.Data.SqlServerCe


Public Class Form1
    Dim bs As New BindingSource
    Dim table As New DataTable

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim cn As New SqlCeConnection
        cn.ConnectionString = "DataSource = C:\Data.sdf"

        Dim da As New SqlCeDataAdapter("SELECT CODABAST, NUMREQUISICAO FROM EVTABASTECIMENTO", cn)
        da.Fill(table)

        bs.DataSource = table 'no seu caso declare um bindingsource e passe o DataTAble para ele
        DataGridView1.DataSource = bs 'popule sua grid com o bs e não seu método

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        bs.Filter = "CODABAST = ' " + TextBoxFiltro.Text.ToString() + "  '" 'use a propriedade FILTER do bindingsource
        TextBoxRecebeValor.Text = DataGridView1.CurrentRow.Cells(0).Value.ToString() 'para para os componente seus os valores extraidos da grid, onde "0" é indice da coluna
    End Sub

End Class

Cara, tenta ae, e posta pra nós o resultado.

Abs.

Ricardo Prado

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo Ricardo, Boa noite!

Ao digitar a linha Imports System.Data.SqlServerCe ele apresenta um erro de definição vou deixar aqui o link pro projeto

para que você possa dar uma analizada em tempo de execução. ficarei muitissimo agradecido se puder me ajudar

http://www.4shared.com/file/mKLh8azg/Cadatro_Clientes.html

Link para o comentário
Compartilhar em outros sites

  • 0

Bred, pelo o que vi você tem um metodo que faz uma buscar no DataContext e joga pra GridView, onde você passo por parametro um critério. como eu não tenho a base da dados, tenta modificar linha desse jeito;

Private Sub BT_filtro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_filtro.Click

If TextBox5.Text <> String.Empty Then

Dim dt As New DataTable

dt = BAL.ListClientes()

dt.DefaultView.RowFilter = " nome_do_campo = '" + BT_filtro.Text.ToString() + "' "

End If

End Sub

se não der certo, nessa camada BAL no método
Public Shared Function SearchClientes(ByVal Nome As String)

Dim db As New ClientesDataContext

Dim Clientes = From s In db.SearchClientes("%" & Nome & "%")

Return Clientes.ToList

End Function

tenha jogar o resultado num "DataTable"

Qualquer coisa, posta pra nós ae;

Abs.

Link para o comentário
Compartilhar em outros sites

  • 0

Caro amigo Ricardo... desde já sou muito grato pela atenção que me deste.... mas com a ajude de alguns colegas acabamos chegando a resolução do problema fisemos a correção como esta no codigo abaixo e deu certinho.....

O problema estva no evento, o evento só ocorre quando clica no conteúdo de uma célula, ou seja, em cima de algum nome. Usa o evento SelectionChanged como está abaixo:

Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.SelectionChanged

CodigoTextBox.Text = Me.DataGridView1.CurrentRow.Cells(0).Value.ToString()

NomeTextBox.Text = Me.DataGridView1.CurrentRow.Cells(1).Value.ToString()

IpTextBox.Text = Me.DataGridView1.CurrentRow.Cells(2).Value.ToString()

CidadeTextBox.Text = Me.DataGridView1.CurrentRow.Cells(3).Value.ToString()

End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...