Jump to content

[Resolvido] Datagrid Dynamic Events


vascoc
 Share

Recommended Posts

A minha datagrid é criada através de um botão, mas gostava que fosse possível adicionar o evento click na datagrid, como ?

dg = New DataGrid()
	dg.Location = New Point(300, 300)
	dg.ReadOnly = True
	dg.Refresh()
	'ajustar da tabela
	dg.Dock = DockStyle.None
	dg.BorderStyle = BorderStyle.FixedSingle
	dg.Size = New System.Drawing.Size(400, 300)
	dg.CaptionVisible = False
	Me.Controls.Add(dg)
	dg.SetDataBinding(ds, "Consulta")
	'dg.Enabled = False
	dg.Update()
Edited by Caça
GeSHi
Link to comment
Share on other sites

Eu tive a ver.... isto assim funciona mas só quando clico no titulo das colunas, não dá para fazer quando clico nas colunas ?

  AddHandler dg.Click, AddressOf dg_click

Public Sub dg_click()
       MsgBox(" asdasd")
   End Sub

Também vi esse link que me deste, mas não entendi muito bem...e esta maneira parece ser mais fácil.

Edited by vascoc
Link to comment
Share on other sites

Algo tipo isto ?

dg = New DataGrid()
	dg.Location = New Point(300, 300)
	dg.ReadOnly = True
	dg.Refresh()
	'ajustar da tabela
	dg.Dock = DockStyle.None
	dg.BorderStyle = BorderStyle.FixedSingle
	dg.Size = New System.Drawing.Size(400, 300)
	dg.CaptionVisible = False
	Me.Controls.Add(dg)
	dg.SetDataBinding(ds, "Consulta")
	AddHandler dg.CellClick, AddressOf dg_cellclick
	'dg.Enabled = False
	dg.Update()

Private Sub dg_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
	MsgBox("asdasd")
End Sub
Edited by Caça
Link to comment
Share on other sites

Não está a dar, um colega meu disse-me para optar por arrastar uma datagriview e depois preenche-la, será mais fácil certo ?

Já programei e tudo, mas agora não sei é preencher os campos de forma correcta :S

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
	Try
		conn = New SqlCeConnection(My.Settings.HOTEL_DBConnectionString)
		cmd = New SqlCeCommand("SELECT Clientes.Cod_Clientes, Clientes.Nome_Clientes, Clientes.Morada_Cliente, Clientes.Localidade_Cliente, Clientes.Cod_Postal_Cliente, Clientes.Contato, Clientes.Num_BI, Clientes.Num_Contribuinte, Clientes.Email, Clientes.Nacionalidade, Reserva.Num_Quarto, Reserva.Data_Entrada, Reserva.Data_Saída, Reserva.Preco, Quartos.Tipo_Quarto, Tipo_Quarto.Tipo_Quarto AS Expr1 FROM Clientes INNER JOIN Reserva ON Clientes.Cod_Clientes = Reserva.Cod_Cliente AND Clientes.Cod_Clientes = Reserva.Cod_Cliente INNER JOIN Quartos ON Reserva.Num_Quarto = Quartos.Num_Quarto AND Reserva.Num_Quarto = Quartos.Num_Quarto INNER JOIN Tipo_Quarto ON Quartos.Tipo_Quarto = Tipo_Quarto.ID_Tipo WHERE (Clientes.Nome_Clientes LIKE '%" & txtnome.Text & "%')", conn)
		da = New SqlCeDataAdapter(cmd)
		ds = New DataSet()
		'   Dim dr As SqlCeDataReader = cmd.ExecuteReader()
		With conn
			If .State = ConnectionState.Open Then 'ta aberto
				.Close() ' fechamos
			End If
			.Open() ' abrimos a conexao
		End With
		da.Fill(ds, "consulta")
		cb = New SqlCeCommandBuilder(da)
	Catch ex As Exception
		MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error)
	End Try
	Dim dr As SqlCeDataReader = cmd.ExecuteReader()
	datagrid_reservas.Columns.Clear()
	Dim n As Integer = dr.FieldCount
	Dim campo As String
	Dim k As Integer
	For k = 0 To n - 1
		campo = dr.GetName(k)
		datagrid_reservas.Columns.Add(campo, campo)
	Next
	Dim i As Integer = 0
	While dr.Read()
		Dim linha As New DataGridViewRow()
		datagrid_reservas.Rows.Add(linha)
		datagrid_reservas.Rows(i).Cells(0).Value = dr.Item(0)
		i = i + 1
	End While
	datagrid_reservas.AutoSizeColumnsMode = DataGridViewAutoSizeColumnMode.AllCells
	conn.Close()
End Sub
End Class
Edited by Caça
Link to comment
Share on other sites

Mais fácil ou não depende do objectivo.

Qual é o problema que estás a ter?

Era aquilo do Cell Click, mas assim fica mais apresentável... A questão é que agora preenche mal...

http://img812.imageshack.us/img812/2715/ddddnn.png

Edited by vascoc
Link to comment
Share on other sites

Troca isto

Dim linha As New DataGridViewRow()
datagrid_reservas.Rows.Add(linha)
datagrid_reservas.Rows(i).Cells(0).Value = dr.Item(0)

por isto

datagrid_reservas.Rows.Add(dr.Item(0), dr.Item(1), dr.Item(2), etc.)

Pedro Martins

Não respondo a duvidas por PM

Link to comment
Share on other sites

E não dá para esconder alguns campos ? Tipo, não quero que mostre o código de cliente.. e eu preciso de ir buscar o código de cliente na conexão

http://img195.imageshack.us/img195/9567/ddddu.png

Edited by vascoc
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.