none
Criar um DataGridView pré preenchido RRS feed

  • Pergunta

  • Olá estou tendo problemas para criar um datagrid com a seguinte descrição:

    São duas colunas a primeira teria 12 linhas (Cada linha seria um mês e essa coluna não seria editável) a segunda coluna seria para o usuário inserir números.

    Consegui fazer um grid que a coluna um torna-se não editável, a segunda funcionou como eu queria, o problema em si é gostaria de saber como fazer para aparecer as 12 linhas automaticamente já preenchidas com cada mês, na coluna um.

    Eu tentei o seguinte código:

    Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
            DataGridView1.Columns(1).ReadOnly = False
            DataGridView1.Rows(1).Cells(1).Value = "Janeiro"
            DataGridView1.Rows(2).Cells(1).Value = "Fevereiro"
            DataGridView1.Columns(1).ReadOnly = True
        End Sub
    Sem alguém puder me ajudar eu serei grato.

    quinta-feira, 4 de junho de 2015 01:46

Respostas

  • Bom dia,

    você pode fazer da seguinte forma:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim decTotal As Decimal = 0
            Dim strValorCelula As String
            Dim decValor As Decimal
            For Each linha As DataGridViewRow In DataGridView1.Rows
                strValorCelula = linha.Cells(1).Value
                If (Not String.IsNullOrEmpty(strValorCelula)) Then
                    Decimal.TryParse(strValorCelula, decValor)
                    decTotal += Convert.ToDecimal(decValor)
                End If
            Next
    
            MsgBox(decTotal, MsgBoxStyle.OkOnly, "Valor Total dos Meses")
        End Sub

    Att,

    Lucio Rogerio


    Espero ter ajudado, se ajudei, por favor "Vote como Útil", e se resolvi seu problema, clique em "Propor como Resposta".
    • Marcado como Resposta Cristopher C I_ segunda-feira, 8 de junho de 2015 12:53
    sexta-feira, 5 de junho de 2015 14:04
  • Boa tarde,

    fiz um exemplo para você.

    Crie uma Classe Chamada Meses, com o seguinte código:

    Public Class Meses
        Private newMes As String
        Public Property Mes() As String
            Get
                Return newMes
            End Get
            Set(ByVal value As String)
                newMes = value
            End Set
        End Property
    
        Private newOutroValor As String
        Public Property OutroValor() As String
            Get
                Return newOutroValor
            End Get
            Set(ByVal value As String)
                newOutroValor = value
            End Set
        End Property
    
        Public Sub New(ByVal pMes As String, ByVal pOutroValor As String)
            newMes = pMes
            newOutroValor = pOutroValor
        End Sub
    End Class
    

    Em seguida altere altere o evento Form1_Load da seguinte forma:

    Public Class Form1
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim listaMeses As New List(Of Meses)
            Dim objBindingSource As New BindingSource()
    
            objBindingSource.Add(New Meses("Janeiro", "1"))
            objBindingSource.Add(New Meses("Fevereiro", "1"))
            objBindingSource.Add(New Meses("Março", "1"))
            objBindingSource.Add(New Meses("Abril", "1"))
            objBindingSource.Add(New Meses("Maio", "1"))
            objBindingSource.Add(New Meses("Junho", "1"))
            objBindingSource.Add(New Meses("Julho", "1"))
            objBindingSource.Add(New Meses("Agosto", "1"))
            objBindingSource.Add(New Meses("Setembro", "1"))
            objBindingSource.Add(New Meses("Outubro", "1"))
            objBindingSource.Add(New Meses("Novembro", "1"))
            objBindingSource.Add(New Meses("Dezembro", "1"))
    
            Dim coluna1 As DataGridViewColumn = New DataGridViewTextBoxColumn()
            coluna1.DataPropertyName = "Mes"
            coluna1.Name = "Mês"
            coluna1.ReadOnly = True
    
            Dim coluna2 As DataGridViewColumn = New DataGridViewTextBoxColumn()
            coluna2.DataPropertyName = "OutroValor"
            coluna2.Name = "Outro Valor"
            coluna2.ReadOnly = False
    
            DataGridView1.Columns.Add(coluna1)
            DataGridView1.Columns.Add(coluna2)
            DataGridView1.AutoGenerateColumns = False
    
            DataGridView1.DataSource = objBindingSource
        End Sub
    End Class
    

    Recomendo que você remoca o código inserido no DataGridView1_CellContentClick.

    Att,

    Lucio Rogerio


    Espero ter ajudado, se ajudei, por favor "Vote como Útil", e se resolvi seu problema, clique em "Propor como Resposta".

    • Marcado como Resposta A_Nunes sexta-feira, 5 de junho de 2015 10:30
    quinta-feira, 4 de junho de 2015 16:03

Todas as Respostas

  • Muito obrigado, você chegou a fazer mais do que eu precisa saber.

    Funcionou da forma que eu queria.

    sexta-feira, 5 de junho de 2015 10:31
  • Incomodando mais um pouco como eu poderia fazer para o pegar os dados das 12 linhas da coluna dois e fazer a soma?

    Tentei fazer como da forma abaixo mais só dá erro

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click        
            Dim Somma As Double
            Dim SS1, SS2 As Integer
            SS1 = DataGridView1.Rows(1).Cells(2).Value
            SS2 = DataGridView1.Rows(2).Cells(2).Value
            ... 
            SS12 = DataGridView1.Rows(12).Cells(2).Value
            Somma = SS1 + SS2 + ... + SS12
            TextBox9.Text = Somma
     End Sub

    Esse button faz outros cálculos também, mas eles usam apenas dados fornecidos por textbox's.

    Meu objetivo agora seria somar os dados da coluna 2 do meu DataGridView e por o resultado na TextBox9 (o qual será utilizado posteriormente).

    sexta-feira, 5 de junho de 2015 13:11