Un arbol con columnas

Iniciado por elmaro, 22 Enero 2008, 20:25 PM

0 Miembros y 1 Visitante están viendo este tema.

elmaro

Buenos dias, volvi con una preocupacion y creo que es bastante grande.

Les comento...
Necesito mostrar unos datos en forma de arbol pero tambien necesito mostrar por cada linea algunas columnas.
Al hacer doble click en una linea, que por debajo se abran los registros dependientes.
Algo asi como una mezcla de TreeView y un DataGrid.
Tambien necesito darle un color de fondo y estilo negrita a determinadas lineas
Alguien tiene idea sobre algo por el estilo?

Estuve usando un control FlexCel que es como un DataGrid y me permite cambiar los colores facilmente. El problema es que no puedo agregar datos en X fila (podria hacer doble click y agregar los datos de la nueva consulta por debajo de el item cliqueado, pero es imposible)

Bueno, si alguien tiene alguna idea se lo voy a agradecer


Un saludo

MANULOMM

hola.. entiendo tu probelma pero no me imagino como seria tu control.. podrias ilustrarnos un poco más... seria interesante encontrar o desarrollar un componente asi...

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


elmaro

MANULOMM gracias por responder
Mira, ya solucione el problema reemplazando el arbol y usando unicamente un FlexCell(datagrid).
Lo que queria ilustrar es lo siguiente:
Tengo un DataGrid con N numero de columnas y 2 lineas supongamos. Al hacer doble click en una de las lineas abrir por debajo de las mismas otras 2 lineas mas por ejemplo(entonces quedarian 4 lineas). Las cuales tendran ssus columnas con sus correspondientes datos. Como si fuera un arbol pero con columnas.
En fin, eso se puede solucionar mediante codigo en lugar de un control. El tema era que el FlexCell no admite agregar items (filas) por debajo de una fila determinada. Solo lo permite al final. Entonces la solucion seria re armar el grid, y no es funcional.

Mi solucion:
Cargue todos los datos en el FlexCell y a los items (filas) que estan por debajo de otro en la estructura de arbol le agregue una sangria de 2 caracteres en blanco. Entonces queda como si fuera un arbol. A todo esto cada linea padre tiene un color de fondo(una opcion que te brindad el FexCell que es muy interesannte.

Bueno... cuando tenga algo terminado voy a postear un snap con el grid para que vean como quedo por si no se entendio o que quise expresar.

Un saludo.

Mariano Gaston Malomo
Capital Federal, Buenos Aires - Argentina

MANULOMM

ahhh ya.. lo que querias hacer es algo tipo acces asi:


o algo parecido....
PD: creo que ponerle color a ciertas filas o columnas tambien es posible en un grid comun...

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


elmaro

Si, exacto. Algo similar a esa imagen. Pero ya tome la decicion de usar el grid y escribi bastante codigo :P jeje

Ahora te comento... yo comente que estaba usando el control FlexCell para .NET y era una version demo... asi que ahora empieza a decirme que lo compre y a mi cliente no le puedo dar eso (no voy a pagar 113 euros) , entonces decidi usar el DataGridView

Tuve qaue actualizar gran parte del codigo en tiempo record. Ahora tengo complicaciones con el tema de los colores en filas distintas.

......

Bueno... paso como media hora desde que empeze a escribir el mensaje, y encontre la solucion mas sencilla

DataGridView1.Item(ColumnIndex, RowIndex).Style.BackColor = Color
DataGridView1.Item(ColumnIndex, RowIndex).Style.ForeColor = Color



Un saludo, gracias por todo.
En breve posteo para fintar toda la fila con un bucle for


elmaro

Para pintar la fila entera:

        Dim i
        Dim Columna = DataGridView1.Columns.Count

        For i = 0 To Columna - 1
            DataGridView1.Item(i, 1).Style.BackColor = Color.Aqua 'Se pinta la fila 1
        Next



Espero que a alguien le sirva.
Saludos nuevamente

MANULOMM

si exacto... es mas por ahi hay unos eventos que permiten pintar la filz o la celada cunado se hace clikc sobre una de ellas.... por aqui no tengo el code... pero es bastante sencillo, creo que lo vi en el msdn

Atentamente,

Juan Manuel Lombana
Medellín - Colombia