border
VB 6
 
 
  #1 (permalink)  
Antiguo 24-05-2007, 04:41:46
Avatar de lesthad
Gran Participación en el Foro
 
Registrado: may 2006
Ubicación: Yucatan
Posts: 107
Créditos: 4.305
lesthad Valoración +2
Predeterminado ¿ComboBox en DataGrid?

Hola. Alguien sabe ¿Como puedo agregar una columna a un datagrid que sea de tipo ComboBox? Para que cuando el usuario ingrese los datos en una de las columnas tenga la opcion de escoger entre varias opciones. Posteriormente cuando presione el boton Guardar todos los datos que ingreso en el DataGrid se guardan en un DataSet.

:-) Saludos
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #2 (permalink)  
Antiguo 24-05-2007, 13:31:10
Buena Participación en el Foro
 
Registrado: dic 2006
Posts: 49
Créditos: 533
fueguino Valoración +2
Predeterminado

Cada columna tiene su tipo, uno de ellos es el Combo. Investigá en las propiedades de las columnas.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #3 (permalink)  
Antiguo 25-05-2007, 15:31:49
Avatar de lesthad
Gran Participación en el Foro
 
Registrado: may 2006
Ubicación: Yucatan
Posts: 107
Créditos: 4.305
lesthad Valoración +2
Predeterminado

hola. Ya mas o menos trate de resolver este problema siguiendo el ejemplo de esta pagina:
http://www.elguille.info/colabora/pu...EnDatagrid.htm

Ahora tengo otro problema relacionado con lo mismo y siguendo el ejemplo de la pagina que les acabo de poner. Les explico:
Mi tabla tiene 6 campos y el ultimo es donde necesito el combobox y hasta aca todo bien me muestra la ultima columna del datagrig en combobox.
El problema es cuando a esa columna de mi datagrid le quiero agregar datos de otra tabla, simplemente no me lo muestra, las demas columnas del datagrid si pero donde necesito el combobox no lo muestra:
Les pego la parte del codigo:

While i < dt.Columns.Count
If i <> 6 Then
'************-> Aca me muestra datos de otra tabla
Dim TextCol As New DataGridTextBoxColumn
TextCol.MappingName = dt.Columns(i).ColumnName
TextCol.HeaderText = dt.Columns(i).ColumnName
TextCol.Width = 80
tableStyle.GridColumnStyles.Add(TextCol)
Else
'*************-> Aca me debe mostrar el combobox, pero no lo hace
Dim ComboTextCol As New DataGridComboBoxColumn
ComboTextCol.MappingName = "DenomClave"
ComboTextCol.HeaderText = "DenomClave (Combo)"
ComboTextCol.Width = 100
ComboTextCol.ColumnComboBox.DataSource = Me.DataSet1.Tables("DenominacionClave").DefaultVie w
ComboTextCol.ColumnComboBox.DisplayMember = "DenomClave"
ComboTextCol.ColumnComboBox.ValueMember = "DenomClave"

tableStyle.PreferredRowHeight = ComboTextCol.ColumnComboBox.Height + 2

tableStyle.GridColumnStyles.Add(ComboTextCol)
End If
i = i + 1
End While


En la parte del else es donde falla, si entra y ejecuta las instrucciones pero simplemente no me muestra esa columna.

Si alguien puede ayudar, se lo agradeceria bastante

:-) Saludos
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #4 (permalink)  
Antiguo 01-06-2007, 22:37:34
Avatar de lesthad
Gran Participación en el Foro
 
Registrado: may 2006
Ubicación: Yucatan
Posts: 107
Créditos: 4.305
lesthad Valoración +2
Predeterminado

HOla de nuevo. Despues de batallar con esto de los comboBox en en DataGrid finalmente encontre la solucion. Lo unico que me faltaba para que el codigo k les puse funcionara, era agregar la columna respectiva a la tabla.

Para eso cree una columna en tiempo de ejecucion y se agregue a la tabla.


Bueno escribo esto para los que hallan tenido el mismo problema que yo, spero les ayude.

:-) Saludos
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #5 (permalink)  
Antiguo 18-10-2009, 07:45:12
Nuevo Amigo
 
Registrado: oct 2009
Posts: 2
Créditos: 352
jgalvarez Aun no valorado
Predeterminado Re: ¿ComboBox en DataGrid?

Hola yo tengo este codigo en el campo;


'Columna Combobox - Productos
Dim ComboTextCol12 As New DataGridComboBoxColumnEnlace
ComboTextCol12.MappingName = "IdProducto" 'De la Tabla Principal, Cual es el enlace
ComboTextCol12.HeaderText = "Producto (Combo)"
ComboTextCol12.Width = 450
ComboTextCol12.ColumnComboBox.DataSource = DataSetSCT.Tables("Tb_Producto").DefaultView
ComboTextCol12.ColumnComboBox.DisplayMember = "NombreArticulo" 'El campo a Visualizar en el Combobox
ComboTextCol12.ColumnComboBox.ValueMember = "IdProducto" 'Es el Enlace de la Segunda Tabla
Style.PreferredRowHeight = ComboTextCol12.ColumnComboBox.Height + 3
Style.GridColumnStyles.Add(ComboTextCol12)


DEBES CREAR UNA CLASE CON ESTE CODIGO QUE LLAME A DataGridComboBoxColumnEnlace DEL CODIGO QUE ESTA ARRIBA


Imports Microsoft.VisualBasic
Imports System
Imports System.ComponentModel
Imports System.Data
Imports System.Data.Common
Imports System.Data.OleDb
Imports System.Drawing
Imports System.Windows.Forms
'************************************************* ********
'Esta clase enlaza el conbobox con el Campo de una Tabla
'************************************************* ********
Public Class DataGridComboBoxColumnEnlace
Inherits DataGridTextBoxColumn
Public ColumnComboBox As ComboSinKeyUpEnlace 'Atención aquí con esta declaración
Private _Origen As System.Windows.Forms.CurrencyManager
Private _NroRenglon As Integer
Private _EstaEditando As Boolean
Public Shared _RowCount As Integer
Public Sub New()
_Origen = Nothing
_EstaEditando = False
_RowCount = -1
ColumnComboBox = New ComboSinKeyUpEnlace
ColumnComboBox.DropDownStyle = ComboBoxStyle.DropDownList
AddHandler ColumnComboBox.Leave, AddressOf DejaComboBox
AddHandler ColumnComboBox.SelectionChangeCommitted, AddressOf ComienzaEditarCombo
End Sub
Private Sub ManejaScroll(ByVal sender As Object, ByVal e As EventArgs)
If ColumnComboBox.Visible Then
ColumnComboBox.Hide()
End If
End Sub
Private Sub ComienzaEditarCombo(ByVal sender As Object, ByVal e As EventArgs)
_EstaEditando = True
MyBase.ColumnStartedEditing(sender)
End Sub
Private Sub DejaComboBox(ByVal sender As Object, ByVal e As EventArgs)
If _EstaEditando Then
SetColumnValueAtRow(_Origen, _NroRenglon, ColumnComboBox.Text)
_EstaEditando = False
Invalidate()
End If
ColumnComboBox.Hide()
AddHandler Me.DataGridTableStyle.DataGrid.Scroll, New EventHandler(AddressOf ManejaScroll)
End Sub
Protected Overloads Overrides Sub Edit(ByVal [source] As System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer, ByVal bounds As System.Drawing.Rectangle, ByVal [readOnly] As Boolean, ByVal instantText As String, ByVal cellIsVisible As Boolean)
MyBase.Edit([source], rowNum, bounds, [readOnly], instantText, cellIsVisible)
_NroRenglon = rowNum
_Origen = [source]
ColumnComboBox.Parent = Me.TextBox.Parent
ColumnComboBox.Location = Me.TextBox.Location
ColumnComboBox.Size = New Size(Me.TextBox.Size.Width, ColumnComboBox.Size.Height)
ColumnComboBox.SelectedIndex = ColumnComboBox.FindStringExact(Me.TextBox.Text)
ColumnComboBox.Text = Me.TextBox.Text
Me.TextBox.Visible = False
ColumnComboBox.Visible = True
AddHandler Me.DataGridTableStyle.DataGrid.Scroll, AddressOf ManejaScroll
ColumnComboBox.BringToFront()
ColumnComboBox.Focus()
End Sub

Protected Overrides Function Commit(ByVal dataSource As System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer) As Boolean
If _EstaEditando Then
_EstaEditando = False
SetColumnValueAtRow(dataSource, rowNum, ColumnComboBox.Text)
End If
Return True
End Function
Protected Overrides Sub ConcedeFocus()
MyBase.ConcedeFocus()
End Sub
Protected Overrides Function GetColumnValueAtRow(ByVal [source] As System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer) As Object
Dim s As Object = MyBase.GetColumnValueAtRow([source], rowNum)
Dim dv As DataView = CType(Me.ColumnComboBox.DataSource, DataView)
Dim rowCount As Integer = dv.Count
Dim i As Integer = 0
Dim s1 As Object
While i < rowCount
s1 = dv(i)(Me.ColumnComboBox.ValueMember)
If (Not s1 Is DBNull.Value) AndAlso _
(Not s Is DBNull.Value) AndAlso _
s = s1 Then
Exit While
End If
i = i + 1
End While
If i < rowCount Then
Return dv(i)(Me.ColumnComboBox.DisplayMember)
End If
Return DBNull.Value
End Function
Protected Overrides Sub SetColumnValueAtRow(ByVal [source] As System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer, ByVal value As Object)
Dim s As Object = value
Dim dv As DataView = CType(Me.ColumnComboBox.DataSource, DataView)
Dim rowCount As Integer = dv.Count
Dim i As Integer = 0
Dim s1 As Object
While i < rowCount
s1 = dv(i)(Me.ColumnComboBox.DisplayMember)
If (Not s1 Is DBNull.Value) AndAlso _
s = s1 Then
Exit While
End If
i = i + 1
End While
If i < rowCount Then
s = dv(i)(Me.ColumnComboBox.ValueMember)
Else
s = DBNull.Value
End If
MyBase.SetColumnValueAtRow([source], rowNum, s)
End Sub
End Class

Public Class ComboSinKeyUpEnlace
Inherits ComboBox
Private WM_KEYUP As Integer = &H101
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = WM_KEYUP Then
'Ignora el keyup para evita problemas de tabulación
Return
End If
MyBase.WndProc(m)
End Sub
End Class


Espero que te sirva
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
Respuesta


Herramientas

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
como llenar una columna de un datagrid con un combobox lola-er Visual Basic.NET 0 21-11-2007 13:38:39
Incrustar ComboBox en un DataGrid Bocanegra Visual Basic.NET 0 18-11-2006 21:14:40
Datagrid con combobox metatron Visual Basic 6.00 5 29-07-2005 08:47:49
ComboBox sobre DataGrid para editar. Mcruz Visual Basic 6.00 2 17-09-2004 00:00:00
Uso del combobox badtzdizzy Visual Basic 6.00 6 28-03-1970 15:35:40


La franja horaria es GMT. Ahora son las 13:27:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
© VB-MUNDO CO. Todos los derechos reservados
Tutoriales Premium | Juegos Online 


right

Programacion, vb 6, visual basic, foro programacion

Inactive Reminders By Icora Web Design