Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

OCorlleone

Function para alterar cada linha de um DataGridView

Recommended Posts

Olá, tenho uma tabela que puxo de um arquivo Access para ser visualizada dentro de um DataGridView.

 

Preciso desenvolver um método para alterar a cor de cada linha, cada linha com uma cor distinta de acordo com o valor de uma célula.

 

Minha tabela possui as seguintes colunas:

BatchID - Product - BachtSize - Priority - StartReq - Status

 

Os campos que serão analisados estão na coluna "Status"

Os valores variam entre: Completed(Verde), Delayed(Vermelho), In Progress(Amarelo), New(Branco)

 

Baseado nos valores que podem ser encontrados, preciso de ajuda para desenvolver um método que altere a linha de acordo com o valor.

 

Esse é todo o código que estou utilizando.

Public Class MainView
    Private Sub btnMainViewCarregarDados_Click(sender As Object, e As EventArgs) Handles btnMainViewCarregarDados.Click 
        Try
            Dim dt As New NorthwindDataSet.All_BatchesDataTable 
            Using da As New NorthwindDataSetTableAdapters.All_BatchesTableAdapter 
                da.Fill(dt)
            End Using
            DataGridView1.DataSource = dt.DefaultView
            Dim cma As CurrencyManager = DirectCast(BindingContext(dt.DefaultView), CurrencyManager)
            AddHandler cma.CurrentChanged, AddressOf SecondaryTable 
            SecondaryTable(Me, Nothing)
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
    Public Sub SecondaryTable (ByVal sender As Object, ByVal e As EventArgs)
        Try
            Dim dv1 = DirectCast(DataGridView1.DataSource, DataView)
            Dim dv2 As New DataView(dv1.Table)
            Dim cma = DirectCast(BindingContext(dv1), CurrencyManager)
                        'define o filtro pelo nome e a seleção do nome no primeiro datagridview
            dv2.RowFilter = "BatchID = '" & dv1(cma.Position)("BatchID").ToString & "'"
                        'atribui o valor ao segundo datagridview
            DataGridView2.DataSource = dv2
        Catch ex As Exception
            Throw ex
        End Try
    End Sub
End Class

 

Eu sou novato com desenvolvimento ASPNET e estou me adaptando ainda.

Peço desculpas se não conseguir ser muito claro em minha dúvida.

 

Desde já agradeço qualquer ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria algo usando jquery pelo menos...

Como esta iniciando e não sei o quanto conhece de javascript, você pode fazer isso pelo vb.net mesmo, basta utilizar o evento RowDataBound pesquise um pouco sobre isso.

 

Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim myVal As String = e.Row.Cells(5).Text 'Indice da sua coluna status
        If myVal = "Completed" Then
            e.Row.BackColor = System.Drawing.Color.Green
        End If
    End If
End Sub

Não testei o código, mas vai ser algo nessa linha, basta adicionar suas outras condições.

Compartilhar este post


Link para o post
Compartilhar em outros sites
16 horas atrás, quintelab disse:

Eu faria algo usando jquery pelo menos...

Como esta iniciando e não sei o quanto conhece de javascript, você pode fazer isso pelo vb.net mesmo, basta utilizar o evento RowDataBound pesquise um pouco sobre isso.

 


Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim myVal As String = e.Row.Cells(5).Text 'Indice da sua coluna status
        If myVal = "Completed" Then
            e.Row.BackColor = System.Drawing.Color.Green
        End If
    End If
End Sub

Não testei o código, mas vai ser algo nessa linha, basta adicionar suas outras condições.

 

 

Eu testei aqui e aqui aponta um erro:

Error    1    Type 'System.Web.UI.WebControls.GridViewRowEventArgs' is not defined.

 

Só que aí me oferece para alterar para:

'System.Windows.Forms.DataGridViewRowEventArgs'

 

Quando eu altero, me aparece mais erros:

Error    1    Event 'RowDataBound' cannot be found.

Error    2    'RowType' is not a member of 'System.Windows.Forms.DataGridViewRow'.

Error    3    'Text' is not a member of 'System.Windows.Forms.DataGridViewCell'.

Error    4    'BackColor' is not a member of 'System.Windows.Forms.DataGridViewRow'.

 

Eu procurei em vários lugares que apontam que estão certo e que fazem parte desta classe.

Alguns forums aparece para .NET Framework 4 pra baixo.

Estou utilizando o 4.5, não sei se tem tanta diferença assim.
 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 7/11/2017 at 19:49, OCorlleone disse:

Eu sou novato com desenvolvimento ASPNET e estou me adaptando ainda.

 

ASPNET é web. Windows Forms Applications não é ASPNET. A resposta que te passei é pra asp.net

 

Aqui tem um exemplo de como fazer em windows forms: https://www.codeproject.com/Questions/573506/changepluscolorplusofplusspecificplusrowplusofplus

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda, eu quem estava seguindo um exemplo em Windows Forms, porém é para ASPNET e agora eu estou no caminho certo, acredito que sua função irá funcionar, logo testarei.
Obrigado. 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mr22robot
      Ola caros amigos. 
      Estou com uma dúvida aqui que embora nao tenho achado ainda uma resposta, acredito que haja.
      Estou estudando a tão sonhada linguagem de programação asp.net core mvc. Linguagem essa que demorei 5 anos pra iniciar os estudos rsrs.
      Mas estou agarrado em uma situação. 
      Estou usando como base de dados nos meus estudos um banco Oracle. Que já tem algumas informações nele. Utilizei o SCAFFOLD para criar as classes e o contexto baseado no banco e tabelas existentes. 
      Porem agora na fase das consultas, estou perdido em como utilizar o IN que eu utilizo no oracle; no LINQ.
      Ex: 
      SELECT CODPROD,DESCRICAO FROM PRODUTO WHERE CODPROD IN(1,2,3,4,5,6) Como eu utilizo esse filtro com uma restrição de códigos de produtos? no caso o where codprod in(1,2,3,4,5,6) ?.
      Desde já obrigado pela ajuda.
    • Por Rafael Massula
      Boa noite pessoal, 
      Tenho o seguinte código em .Net que faz a comparação de uma senha que foi criptografada e salva no banco com a senha comum que o usuário conhece. O algoritmo que desenvolvi foi esse da image.png porem preciso converter essa verificação para JavaScript pela seguinte necessidade, será uma aplicação em electron e ela poderá funcionar offline então não terei como mandar a verificação para o servidor. Existe alguma possibilidade? Desde já agradeço. 

    • Por marceloDiegues
      Olá, amigos.
      Por favor,  me ajude com a seguintes perguntas.
       
      Qual a complexidade de um projeto desse?
      Qual o preçp de um projeto desse tipo?
       
      Quero contratar algum profissional para criar um site que tenha as seguintes funcionabilidades:
       
      1- Cadastro de usuário;
      2- Login e senha;
      3- O site seria muito parecido com o www.qconcursos.com, o usuário resolveria questões online.
      Contudo, haveria a possibilidade de criar salas tipo aqueles bate-papo da  UOL.
      Então, o usuário criaria salas de estudos, em que , resolveria questões e conseguiria se comunicar por chat com usuários que estejam na mesma sala.
       
      Exemplo em anexo:
       
       
       
       

    • Por iveusername
      Preciso de ajuda com o serviço de url de suporte ao vivo. Quando recebo um url de Umuly.com no Postman, outras pessoas não devem ter permissão para bater papo usando esse url. Supondo que 10.000 pessoas tenham um bate-papo ao vivo, o serviço deve criar 10.000 novos urls. Qual é a razão por trás disso? Como o serviço gera novos urls para cada um? (Em linguagem .NET Core)
    • Por Caio Henrique Bottigelli
      Olá, estou desenvolvendo um sistema em asp.net Framework MVC, usando o banco de dados Postgresql. Quando 2 usuários diferentes usam o sistema acontece conflito de informações, por exemplo, no cadastro de clientes, preciso vincular uma pessoa a um determinado cliente, caso 2 usuários estiverem usando, e os 2 fizerem essa ação de vincular pessoas a um cliente, no 2º usuário vai aparecer a pessoa que o 1º usuário vinculou. É como se o sistema estivesse usando uma única Lista e os 2 usuários estivessem compartilhando essa lista.
      As variáveis de conexão não estão estáticas, toda vez que alguém entrar no sistema, vai ser criado uma nova instancia de conexão.
      Alguém sabe como resolver esse conflito de informação entre usuários?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.