Como Cargar Dataview.columns Para Elegir Las Columnas A Mostrar En Forma Variable


Objetivo: Como Cargar Dataview.columns Para Elegir Las Columnas A Mostrar En Forma Variable
Necesito que se muestren los campos seleccionados según las variables de los IF
Pero siempre se muestran todos los campos.

Unicamente me ha funcionado si hago:

dvClientes.Columns=["RazonSocial", "Nombre"]

El tema es que los campos son variables dependiendo del usuario, intenté con los siguiente métodos pero sin resultados:

En los ejemplo mostrados, si se modifican los títulos, pero luego aparecen todas las columnas de la tabla de datos

With dvClientes
If $razSocial_m Then
.Columns[i] = "RazonSocial"
.View.Columns[i].Width = 100
.View.Columns[i].Title = "Razón Social"
.View.Columns[i].Alignment = Align.Center
i += 1
Endif
If $nombre_m Then
.Columns[i] = "Nombre"
.View.Columns[i].Width = 100
.View.Columns[i].Title = "Nombre Comercial"
.View.Columns[i].Alignment = Align.Center
i += 1
Endif
end select


También he probado con:

With dvClientes
If $razSocial_m Then
.Columns.Add("RazonSocial")
.View.Columns[i].Width = 100
.View.Columns[i].Title = "Razón Social"
.View.Columns[i].Alignment = Align.Center
i += 1
Endif
If $nombre_m Then
.Columns.Add("Nombre" )
.View.Columns[i].Width = 100
.View.Columns[i].Title = "Nombre Comercial"
.View.Columns[i].Alignment = Align.Center
i += 1
Endif
end select


Sin obtener resultados:


También he probado cargando los campos en un array e intentado asignar el array de la siguiente forma: dataview.columns=array, pero al ejecutar devuelve el error que el objeto es nulo.

Desde ya gracias por la ayuda que puedan dar.

última edición por LuisDaniel el Miercoles, 26 Diciembre 2012, 17:15; editado 1 vez
Perfil MP  
Objetivo: Re: Como Cargar Dataview.columns Para Elegir Las Columnas A Mostrar En Forma Variable
LuisDaniel escribió: [Ver mensaje]
Necesito que se muestren los campos seleccionados según las variables de los IF

También he probado hacer:

a="RazonSocial"
b="Nombre"
c =""

dataview.columns= [a, b, c]

Pero al tener alguna variable en "" entonces rechaza el array porque no existe una columna NULA.



Desde ya gracias por la ayuda que puedan dar.

Perfil MP  
Objetivo: Re: Como Cargar Dataview.columns Para Elegir Las Columnas A Mostrar En Forma Variable
Se me ocurre que podias definir el ancho de la columna como 0, para no mostrar la columna que no te interese que vea el usuario...


Por ejemplo
'la columna 3, quiero que no se muestre...
if i=2 then dvClientes.View.Columns[i].Width =0 ' es 2 porque las columnas empiezan por 0,1,2,



Otra forma, que puedes probar.... defines varios arrays dependiento de lo que quieras mostrar...


public sub muestra(valor as integer)
dim muestraPersona as new string[]
dim muestraRazonSocial as new string[]
dim muestraPersonasRazon as new string[]

muestrapersona[0]="Nombre"

muestraRazonSocial[0]="RazonSocial"

muestraPersonasRazon[0]="RazonSocial"
muestraPersonasRazon[1]= "Nombre"


'con el valor 1, mostraria 1 columna, "NOmbre"
if valor =1 then dataview.columns=muestrapersona

'con el valor 2, mostraria 1 columna "RazonSocial"
if valor =2 then dataview.columns=muestraRazonSocial

'con el valor 3, mostraria 2 columnas, RazonSocial y Nombre
if valor =3 then dataview.columns=muestraPersonasRazon



A ver si te sirve... saludos

última edición por jsbsan el Miercoles, 26 Diciembre 2012, 22:43; editado 7 veces
Objetivo: Re: Como Cargar Dataview.columns Para Elegir Las Columnas A Mostrar En Forma Variable
jsbsan:
Muchas gracias por tu pronta respuesta:

Voy a implementar la primer opción "columna de ancho nulo" a ver que pasa.

Respecto a la segunda opción que me das, la he probado y al ejecutar obtengo un mensaje que me dice OBJETO NULO, al momento de asignar la string al columns del dataview.
¿Sabes por que puede ocurrir esto?.

Nuevamente muchas gracias.
Luis.

Perfil MP  
Objetivo: Re: Como Cargar Dataview.columns Para Elegir Las Columnas A Mostrar En Forma Variable
Luis:

Citar:
Respecto a la segunda opción que me das, la he probado y al ejecutar obtengo un mensaje que me dice OBJETO NULO, al momento de asignar la string al columns del dataview.
¿Sabes por que puede ocurrir esto?.


Si... en vez de poner [0], [1], usa el metodo add():

muestrapersona.add("Nombre")

muestraRazonSocial.add("RazonSocial")

muestraPersonasRazon.add("RazonSocial")
muestraPersonasRazon.add("Nombre")


Asi deberia funcionar... la razon es porque cuando defino el array de cadenas, no le he puesto ningun limite:
dim muestraPersona as new string[]

Si le hubiera puesto un limite si funcionaria del modo primero que te dije:
dim muestraPersona as new string[10]

Objetivo: Re: Como Cargar Dataview.columns Para Elegir Las Columnas A Mostrar En Forma Variable SOLUCIONADO
jsbsan escribió: [Ver mensaje]
Luis:

Citar:
Respecto a la segunda opción que me das, la he probado y al ejecutar obtengo un mensaje que me dice OBJETO NULO, al momento de asignar la string al columns del dataview.
¿Sabes por que puede ocurrir esto?.


Si... en vez de poner [0], [1], usa el metodo add():

muestrapersona.add("Nombre")

muestraRazonSocial.add("RazonSocial")

muestraPersonasRazon.add("RazonSocial")
muestraPersonasRazon.add("Nombre")


Asi deberia funcionar... la razon es porque cuando defino el array de cadenas, no le he puesto ningun limite:
dim muestraPersona as new string[]

Si le hubiera puesto un limite si funcionaria del modo primero que te dije:
dim muestraPersona as new string[10]


jsbsan:
He probado definiendo el array de las dos formas (con y sin límite) y he probado asignando los elementos al array directamente y con el método "Add", pero en todos los casos al asignar el array al columns, en tiempo de ejecución recibo el mensaje de OBJETO NULO, he verificado el contenido del array imprimiendo en la consola alguno de sus miembros y los mismos existen.

Pero usar el método de ancho "0" y de esta forma ocultar las columnas que no deben aparecer ha funcionado!!!!!!!.

Por lo tanto el tema esta resuleto, auqnue me sigue quedando la duda de por que no puedo asignar el array???

Perfil MP  
Objetivo: Re: Como Cargar Dataview.columns Para Elegir Las Columnas A Mostrar En Forma Variable
LuisDaniel escribió: [Ver mensaje]

Por lo tanto el tema esta resuelto, aunque me sigue quedando la duda de por que no puedo asignar el array???


Espera que estoy probando esto justamente y por aqui está el problema en la asignación de los campos al array.

Resultado de las pruebas:
El array lo dimensiono:
dim alistar as new string[20]

si uso el método Add del array, el mismo es inefectivo y los valores no se cargan al array.

Si uso alistar[0]="RazonSocial" entonces el dato se carga y cuando hago un print de alistar[0] el dato aparece en la consola, pero cuando uso el array en el dataview (dataview.columns=alistar), me aparece OBJETO NULO.

Pero si defino al array como:
dim alistar as new string[]
asigno los valores con el método Add
alistar.Add("RazonSocial")
y luego lo asigno como
dataview.columns=alistar

SI FUNCIONA!!!!!!!!!!!!

Gracias de nuevo por los comentarios que han permitido resolver totalmente el problema!!!!!

Perfil MP  
Objetivo: Re: Como Cargar Dataview.columns Para Elegir Las Columnas A Mostrar En Forma Variable
Ok, estupendo....

Citar:
si uso el método Add del array, el mismo es inefectivo y los valores no se cargan al array.


Te cuendo la diferencia entre
Dim lista as new string[] ' 1º forma


y

Dim lista as new string[10] ' 2º forma.



De la primera forma, le estas definiendo un array de cadenas del tipo string, sin especificar su longitud... por lo tanto lo suyo es usar el metodo .add, que le va añadiendo valores



De la segunda forma, le dices que tienes un array de 10 elementos,y los diez estan vacios (contienen cadenas vacias "")l, estonces si usas el método .add, lo que hace es añadir un valor mas, tendrias 11 elementos, pero los anteriores siguen estandodos vacios, para entrar datos del elemento 1 al 9, tendrias que usar:
lista[0]="lo que sea"
lista[1]="dato..."

El tema esta, en que dataview.columns, no admite valores vacios (""), tienen que contener algo....

El codigo que te funciona:
dim alistar as new string[]
'asigno los valores con el método Add
alistar.Add("RazonSocial")
'y luego lo asigno como
dataview.columns=alistar



Pero si lo haces de esta manera:

dim alistar as new string[2]
alistar[0]="RazonSocial"
alistar[1]="Nombre"
dataview.columns=alistar


Tambien te va a funcionar.... ya que el array de cadenas alistar, tiene 2 elementos, y los dos tienes valores


Saludos

Objetivo: Re: Como Cargar Dataview.columns Para Elegir Las Columnas A Mostrar En Forma Variable SOLUCIONADO
Jsbsan:
Ya entendí porque no me funcionaba, yo definía el array como:

dim alistar as new string[20]

Luego inicializaba solo los dos primeros y me quedan 18 elementos nulos en el array que se pasan al columns del dataview
Como el dataview colummns no admite elementos nulos, entonces aparece el error OBJETO NULO.

Gracias por ayudarme, a comprender mejor este excelente software.!!!!!!
Luis.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1403s (PHP: -7% SQL: 107%)
Consultas SQL: 24 - Debug off - GZIP Activado