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

gridview - iniciando vazia e adicionado itens


Carlos Rocha

Pergunta

Seguinte:

tenho no meu formulario de pedidos, um texbox com o código do produto e uma textbox com a descrição do produto.

Abaixo, tenho uma Gridview e um botão incluir.

O que eu preciso:

Preciso que quando clikar em incluir, pegar os valores que estão nas textbox e preencher a gridview com com eles e, quando trocar os valores das textbox teria que ao clikar no botão incluir de novo, preencher outra linha na gridview.

Outra coisa é que essa gridview não esta ligada a nenhum datasource e dessa forma, as colunas dele veem vazias e dai tentei preenher(alterar) os nomes(cabeçalhos) das colunas com o código abaixo mas só da um erro dizendo que esta fora do intervalo. O que fazer?

Private Sub Pedidos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        DGWPedidos.Columns.Item(0).HeaderText = "CODIGO"
        DGWPedidos.Columns.Item(1).HeaderText = "DESCRIÇÃO"
        DGWPedidos.Columns.Item(2).HeaderText = "TIPO UNIDADE"
        DGWPedidos.Columns.Item(3).HeaderText = "PREÇO UNITÁRIO"
        DGWPedidos.Columns.Item(4).HeaderText = "SUB-TOTAL"
    End Sub

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Bom, antes de tudo, acredito que seja melhor definir cabeçalhos no arquivo ASPX, não? Porque misturar layout com código-fonte? Você definindo eles, a grade também permanecerá vazia.

Uma dica, seria você usar uma coleção, ou DataTable, para manter esses itens. A cada adição, adicione um item na coleção e em seguida defina o DataSource da grade com a coleção e em seguida chame o método DataBind.

Bom, qualquer coisa estamos aí! Falows!

Atualizado: desculpe, entendi agora, você está falando de Windows Forms, e não ASP.net. Você disse GridView, que é componente do ASP.net (no Windows Forms, o correto é DataGridView). Mas de qualquer forma,o que eu disse ainda vale: adicione e configure colunas em design-time (na IDE do VS) e adicione dados em DataSource (vocênão precisará de invocar método DataBind)

Link para o comentário
Compartilhar em outros sites

  • 0

Carlos, me adiciona no MSN: denis.bittencourt@hotmail.com

Assim, posso te ajudar e podemos trocar idéias do projeto.

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

Seguinte pessoal, aproveitando que ninguém respondeu, deixa eu mudar a exposição do problema.

Bom, tenho um dataset, uma gridview e um datasource

A tabela que é ligada à gridview atraves do datasource e a tabela DetalhesPedidos e ela esta assim:

pedidoID
produtoID
preço
quantidade
Na gridview gostaria de alterar esses campos, acrecentando mais 3 campos ficando assim:
CODIGO
DESCRICAO
TIPO UNIDADE
PREÇO UNITÁRIO
QUANTIDADE
PRECOTOTAL

Com relação aos 4 primeiros campos tudo bem mas, como acrecentar mais colunas na gridview e na ordem que preciso e o que é + dificil para mim:

Estando usando essa grid view para que, ao clikar em um, botão inserir, fazer aparecer na gridview o conteudo de umas textbox e,.............. à cada vez que clikar no botão inserir, tambem acrecentar + uma linha à gridview a cada clike no botão inserir em um form de pedidos.

Como fazer isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Insistindo mais um pouquinho:

Bom tentei incrementar mais uma linha à gridview cada vez que o botão "Incluir item ao pedido" for clikado (incluir.mouseclik) mas ta dando o seguinte erro quando incrementa mais 1 linha:

O índice estava fora do intervalo. Ele deve ser não-negativo e menor que o tamanho da coleção. Nome do parâmetro: index
O incremento, 1, 2, 3, 4 ... esta funcionando agora mas quando manda inserir a 2ª linha da erro. Eis o código:
Dim I As Integer = 0
...
...
...
Private Sub Incluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Incluir.Click
        If qtde.Text = String.Empty Then
            MsgBox("Informe a quantidade requerida...")
            qtde.Focus()
            Exit Sub
        End If

        DGWPedidos.Rows(I).Cells(0).Value = registro
        DGWPedidos.Rows(I).Cells(1).Value = produto.Text
        DGWPedidos.Rows(I).Cells(2).Value = unidade.Text
        DGWPedidos.Rows(I).Cells(3).Value = preço.Text
        DGWPedidos.Rows(I).Cells(4).Value = qtde.Text
        DGWPedidos.Rows(I).Cells(5).Value = preço.Text * qtde.Text
        I = I + 1
    End Sub

E agora. Como sair dessa?

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, primeira coisa.. Tenta não postar três posts seguidos (prejudica a visualização, principalmente quando tem uma parte do código em um e outra parte no outro post...

Dá uma olhada em seu código:

Private Sub Incluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Incluir.Click
        If qtde.Text = String.Empty Then
            MsgBox("Informe a quantidade requerida...")
            qtde.Focus()
            Exit Sub
        End If

        DGWPedidos.Rows(I).Cells(0).Value = registro
        DGWPedidos.Rows(I).Cells(1).Value = produto.Text
        DGWPedidos.Rows(I).Cells(2).Value = unidade.Text
        DGWPedidos.Rows(I).Cells(3).Value = preço.Text
        DGWPedidos.Rows(I).Cells(4).Value = qtde.Text
        DGWPedidos.Rows(I).Cells(5).Value = preço.Text * qtde.Text
        I = I + 1
    End Sub

Em que momento você definiu a variável "i" ??

Verifique também a quantidade de células e colunas...

Se não conseguir resolver, posta o código completo !

Qualquer coisa, posta aí !

Link para o comentário
Compartilhar em outros sites

  • 0

tai:

Imports MySql.Data.MySqlClient
Public Class Pedidos
    Dim accDb As New DBConnection
    Dim registro As Integer
    Dim dr As DataRow
    Dim dt As DataTable
    Dim ds As DataSet = Nothing
    Dim b As New DataGridViewColumn
    Dim i As Integer = 0

    Private Sub mostracolunas()
        DGWPedidos.Columns.Item(0).HeaderText = "CODIGO"
        DGWPedidos.Columns.Item(1).HeaderText = "DESCRIÇÃO"
        DGWPedidos.Columns.Item(2).HeaderText = "TIPO UNIDADE"
        DGWPedidos.Columns.Item(3).HeaderText = "PREÇO UNITÁRIO"
        DGWPedidos.Columns.Item(4).HeaderText = "QTDE"
        DGWPedidos.Columns.Item(5).HeaderText = "SUBTOTAL"
    End Sub
    Private Sub bcliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bcliente.Click
        Dim dialogo As New frmClientes
        dialogo.ShowDialog()
        If dialogo.DialogResult = Windows.Forms.DialogResult.OK Then
            Dim tabela As String = "Clientes"
            Dim sql As String = "Select * from " & tabela & " where clienteID = '" & dialogo.registro & "'"
            ds = accDb.ExecuteDS(sql, tabela)
            Dim dr As DataRow
            For Each dr In ds.Tables(0).Rows
                codigo.Text = dr.Item("clienteID")
                cliente.Text = dr.Item("nome")
                registro = dr.Item("clienteID")
            Next dr
        Else
            MsgBox("Não foi selecionado nenhum cliente.")
            codigo.Text = ""
            cliente.Text = ""
        End If
    End Sub

    Private Sub bproduto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bproduto.Click
        Dim dialogo As New frmProdutos
        dialogo.ShowDialog()
        If dialogo.DialogResult = Windows.Forms.DialogResult.OK Then
            Dim tabela As String = "Produtos"
            Dim sql As String = "Select * from " & tabela & " where produtoID = '" & dialogo.registro & "'"
            ds = accDb.ExecuteDS(sql, tabela)
            Dim dr As DataRow
            For Each dr In ds.Tables(0).Rows
                produto.Text = dr.Item("descricao")
                preço.Text = dr.Item("preço")
                unidade.Text = dr.Item("unidade")
                registro = dr.Item("produtoID")
            Next dr
        Else
            MsgBox("Não foi selecionado nenhum cliente.")
            codigo.Text = ""
            cliente.Text = ""
        End If
    End Sub

    Private Sub Pedidos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim tabela As String = "detalhespedidos"
        Dim sql As String = "Select * from " & tabela & ""
        ds = accDb.ExecuteDS(sql, tabela)
        DGWPedidos.DataSource = ds.Tables(0).DefaultView
        mostracolunas()
    End Sub

    Private Sub Incluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Incluir.Click
        'DGWPedidos.Rows(0).Cells(0).Value = registro
        'DGWPedidos.Rows(0).Cells(1).Value = produto.Text
        'DGWPedidos.Rows(0).Cells(2).Value = unidade.Text
        'DGWPedidos.Rows(0).Cells(3).Value = preço.Text
        'DGWPedidos.Rows(0).Cells(4).Value = qtde.Text
        'DGWPedidos.Rows(0).Cells(5).Value = preço.Text * qtde.Text

        If qtde.Text = String.Empty Then
            MsgBox("Informe a quantidade requerida...")
            qtde.Focus()
            Exit Sub
        End If
        DGWPedidos.Rows(i).Cells(0).Value = registro
        DGWPedidos.Rows(i).Cells(1).Value = produto.Text
        DGWPedidos.Rows(i).Cells(2).Value = unidade.Text
        DGWPedidos.Rows(i).Cells(3).Value = preço.Text
        DGWPedidos.Rows(i).Cells(4).Value = qtde.Text
        DGWPedidos.Rows(i).Cells(5).Value = preço.Text * qtde.Text

        For x = 0 To DGWPedidos.Rows.Count
            total.Text = DGWPedidos.Rows(0).Cells(5).Value
        Next

        i = i + 1
    End Sub

    Private Sub total_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles total.TextChanged
        'total.Text = DGWPedidos.Rows(0).Cells(5).Value
    End Sub
End Class

Editado por Carlos Rocha
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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...