bueno te convendria hecharle un vistaso a la ayuda sobre de TableStyles,
El codigo que te pasé recorre en un cilco los campos de la tabla y conforme
los va encontrando los carga al TableStyles,
de forma que carga los nombres tal como los encuentra
puedes crear una variable por cada columna del datagrid y personalizarla a
mano dando los anchos correspondientes a cada columna,
es decir.
Dim TS As DataGridTableStyle
Dim Col1 As New DataGridTextBoxColumn
Dim Col2 As New DataGridTextBoxColumn
Dim Col3 As New DataGridTextBoxColumn
Dim Col4 As New DataGridTextBoxColumn
Dim Col5 As New DataGridTextBoxColumn
etc...
With Col1
.MappingName="Nombre de tu campo"
.HeaderText = "Texto que deseas mostrar"
.Width = AnchodeLaColumna
End with
With Col2
... configuras cada una de tus columnas
End with
' al final las agregas al TableStyle
With TS
.GridColumnStyles.Add(Col1)
.GridColumnStyles.Add(Col2)
.GridColumnStyles.Add(Col3)
... etc
.MappingName("el nombre de tu tabla") 'si no esta bien, simplemente no
podras ver bien el DataGrid
End With
al final agregas el TableStyles a tu DataGrid
With Datagrid '(o ExtendedDataGrid)
.TableStyles.Add(TS)
.DataSource = tu Tabla
End With
En cuanto a la Excepcion que comentas podria ser que el campo en el que esta
asignado el boton no tenga valor, y al cambiarlo de Mapping, pueda
corregirse, ... no estoy seguro
Saludos
"Manuel Aguilera" <***@yahoo.es> escribi� en el mensaje news:28ac01c51dbc$97835170$***@phx.gbl...
Hola de nuevo, y gracias por la ayuda.
Revise tu codigo y me aparece una excepcion
"System.NullReferenceException". Extraño ya que le agregue
try catch a tu codigo.Mi query entrega tres filas. Cuando
hago click en el boton de la primera me aparece "fila 0",
luego en la segunda "fila 1", y cuando hago click en la
tercera para que me aparezca el boton me aparece esta
excepcion.
Otra pregunta, como puedo personalizar el nombre de las
columnas que aparecen en mi grilla? Ya que aparecen los
mismos nombres de los campos de mi BD.
Y otra pregunta: El campo en donde aparecen botones es
rut_medico (en mi programa), y al ver la grilla en
ejecucion en ese campo aparece el nombre de "Boton
rut_medico". ¿Por que es ese campo el que tiene los
botones? ¿Como puedo asignarlo a otro campo?
Gracias nuevamente, ya me haz ayudado bastante.
-----Mensaje original-----
Ok
Primero que nada tienes que agregar el Extended DataGrid a
tu cuadro de
herramientas...
Menú herramientas / Agregar o Quitar herramientas del
cuadro de
herramientas...
esto puede tardar algunos minutos
en Examinar buscas la libreria (DLL) del ExtendedDatagrid
Al terminar tendras al final de tu barra de herramientas
el control
ExtendedDatagrid junto con algunos otros controles que
incluye la libreria
te paso un ejemplo de codigo que accede a la base de
Neptuno de Microsoft
Access, posiblemente tengas que cambiar la cadena de conexion.
Primero, para cachar el evento click de la columna, se
define una variable
Leadit.ExtendedDataGrid.ExtendedDataGridButtonColumn
el codigo quedaria asi
Private WithEvents bcol As New
Leadit.ExtendedDataGrid.ExtendedDataGridButtonColumn
Private Sub Form4_Load(ByVal sender As System.Object,
ByVal e As
System.EventArgs) Handles MyBase.Load
Dim connection As New OleDb.OleDbConnection( _
"Provider=Microsoft.JET.OLEDB.4.0;data
source=C:\Neptuno.mdb")
dim DS As New DataSet
dim Adapt As New OleDb.OleDbDataAdapter
DAdapt.SelectCommand = New
OleDb.OleDbCommand("Select * From
Clientes", connection)
With connection
.Open()
DAdapt.Fill(DS)
.Close()
End With
Dim ts As New DataGridTableStyle
Dim i As Integer
For i = 0 To DS.Tables("Table").Columns.Count - 1
If i = 1 Then
With bCol
.MappingName =
DS.Tables("table").Columns(i).ColumnName
.HeaderText() = "Boton " &
DS.Tables("table").Columns(i).ColumnName
.Width = 150
.BackColour =
Color.FromKnownColor(KnownColor.Control)
End With
ts.GridColumnStyles.Add(bCol)
Else
Dim Col As New DataGridTextBoxColumn
Col.MappingName =
DS.Tables("table").Columns(i).ColumnName
Col.HeaderText() =
DS.Tables("table").Columns(i).ColumnName
ts.GridColumnStyles.Add(Col)
End If
Next
ts.MappingName = "Table"
With Me.ExtendedDataGrid1
.TableStyles.Add(ts)
.DataSource = DS.Tables("table")
End With
End Sub
Private Sub bcol_ButtonColumnClick(ByVal sender As
Object, ByVal e As
Leadit.ExtendedDataGrid.ButtonColumnEventArgs) _
Handles bcol.ButtonColumnClick
MsgBox("Click en fila " &
Me.ExtendedDataGrid1.CurrentRowIndex)
End Sub
De forma que puedes cachar el evento al hacer click de la
Columna del boton
Saludos
Carlos Durán
Hola, gracias por la ayuda. Visite el link que pusiste,
descarge un .zip
(Leadit.ExtendedDataGrid_0_1_2_2_for_1_0.zip), y ahora que
hago con esto??? Disculpa la ignorancia pero llevo menos de
6 meses programando con VB.NET, y aun me queda mucho por
aprender.
Otra pregunta, es posible ingresar a un formulario al hacer
click sobre la fila de una grilla???
-----Mensaje original-----
Hola Manuel
Es totalmente falso que no se puedan agregar botones u
otro control al data
grid, lo que en realidad pasa es que resulta bastante
complicado hacerl :(,
por ahi en uno de los links que se proporcionan en este
foro he bajado un
codigo que, aunque en realidad no pone un boton dentro del
datatgrid, dibuja
un mapa de bits con la apariencia de un boton y le da
funcionalidad como si
se tratase de un boto, sin embargo el codigo es algo
complicado hasta que se
le estudia bien, en fin, si no deseas complicarte
demasiado puedes
descargarte el XtendedDataGrid, que es de uso libre,y te
permite mostrar
controles como botones, barras de progreso, combos y una
serie de controles
dentro de las celdas de tu datagrid, es un control herado
del Datagrid.
http://dotnet.leadit.be/extendeddatagrid/CategoryView.aspx?category=Home
Sin embargo tiene algunos problemillas y posiblemente
querras programar tus
propios controles
Saludos
Carlos Duran
Hola, necesito de su ayuda comunida. Tengo un datagrid que
se llena con los datos de 2 tablas de mi BD. Lo que quiero
hacer es que de acuerdo a los registros que se muestren en
el datagrid se cree automaticamente un boton dentro de una
ultima columna, en donde al hacer click sobre ese boton se
acceda a otro formulario de acuerdo a los datos que
contenga cada fila. Es decir, si mi datagrid se carga con 5
registros, deberian aparecer 5 botones que permitan
ingresar a un formulario que se llenara segun los datos
correspondientes.
He leido en otros foros y algunos dicen que no se pueden
poner botones dentro de un datagrid. Si fuese asi, ¿que
solucion me dan?
Otra cosa que habia pensado (pero que no se hacer) es que
cuando se seleccione una fila se abra un formulario con los
datos correspondientes a la fila seleccionada. ¿Se podra
hacer eso?
Espero que me puedan ayudar con esto por favor. Gracias.
.
.