Ir para conteúdo

Arquivado

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

Carcleo

gridview - iniciando vazia e adicionado itens

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte pessoal, aproveitando que ninguem 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
preco
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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 = preco.Text
		DGWPedidos.Rows(I).Cells(4).Value = qtde.Text
		DGWPedidos.Rows(I).Cells(5).Value = preco.Text * qtde.Text
		I = I + 1
	End Sub
E agora. Como sair dessa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.

O erro ocorre quando, na parte abaixo do código, é gerada a 2ª linha.

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 = preco.Text
		DGWPedidos.Rows(i).Cells(4).Value = qtde.Text
		DGWPedidos.Rows(i).Cells(5).Value = preco.Text * qtde.Text

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

		i = i + 1  'quando o código chega aqui e gera i=2, na hora de fazer o DGWPedidos.Rows(2).Cells(0).Value aí da o erro
	End Sub
Meu código todo é:

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")
				preco.Text = dr.Item("preco")
				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 = preco.Text
		'DGWPedidos.Rows(0).Cells(4).Value = qtde.Text
		'DGWPedidos.Rows(0).Cells(5).Value = preco.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 = preco.Text
		DGWPedidos.Rows(i).Cells(4).Value = qtde.Text
		DGWPedidos.Rows(i).Cells(5).Value = preco.Text * qtde.Text

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

		i = i + 1
	End Sub
End Class
Só não sei se estou fazendo certo.

A ideia é :

textbox para exibir dados do produto

botão incluir, que quando clikado popula a primeira linha da gridview

O problema é que, na texbox, quando se escolhe o novo produto(ítem do pedido), não gera mais uma linha na GRIDVIEW e da o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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