Autor
|
Tema: Control TreeView (Leído 16,632 veces)
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
exelente, mañana probare usar un datatalbe en lugar de dataset y luego lo comento, si funciona posteo el code.
Saludos
|
|
|
En línea
|
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
bueno, al fin. pude cargar el treeview. con exactamente el code q postiastes. lo unico que me surgio un gran gran problema
al cargar los 7000 registros el tiempo de espera es alto tarda aproximadamente 12 minutos, entre que hace las consultas revisa y carga.
no hay forma de guardar el control junto con sus datos de tal forma que cuando el usuario quiera ver el arbol no lo tenga que volver a cargar, sino simplemente cargar el control con los datos previamente cargados.
muchas gracias nuevamente
|
|
|
En línea
|
|
|
|
Hadess_inf
Desesperado
Colaborador
Desconectado
Mensajes: 2.048
Nueva Vida
|
Bueno no sabria decirte porque nunca he hecho algo parecido, pero podria sugerir que intentes un par de cosas. Lo primero seria que ese formulario cuando no lo necesites no lo cierres, sino que lo ocultes, y cuando lo quieras usar nuevamente lo haces visible, con esto el treeview ya no tendria que llenarse cada vez que cargues el formulario. Ocultar formulario Form.hide() Mostrar formulario Form.show()
|
|
« Última modificación: 2 Noviembre 2007, 17:23 pm por hadess_inf »
|
En línea
|
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
si, podria ser. pero el usuario no va a querer esperar 11 minutos desde un principio, y sin contar que los registros pueden aumentar un poco.
bueno, voy a tratar de buscar otra solucion. muchisimas gracias por tu ayuda hadess_inf
|
|
|
En línea
|
|
|
|
Hadess_inf
Desesperado
Colaborador
Desconectado
Mensajes: 2.048
Nueva Vida
|
Bueno claro que la cantidad de tiempo que demore en llenarse el control sera bastante, bueno todo eso depende del equipo en el cual se este trabajando(me refiero al hardware), aun asi, buscare una alternativa y vere si se puede agilizar ese proceso, saludos. Si encuentras una respuesta a tu problema posteala.
|
|
|
En línea
|
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
Bueno hadess_inf, te cuento. Encontre la solucion al 100% de mi problema. Hize lo siguiente: En lugar de cargar todo el arbol al cargar el formulario, decidi solo cargar la raiz del arbol, osea, un solo item. Luego si se quieren ver los que cuelgan del item se le hace doble click y se cargan los items del segundo nivel. Si se queire ver lo que cuelga de alguno de esos items recien cargados, se le hace doble click. Y asi hasta llegar a donde quiera sin necesidad de cargar datos innesesarios que el usuario no va a mirar.
El tiempo es altamente importante en estas situaciones, el cual fue reducido a una respuesta casi instantanea en el peor de los casos. El codigo esta muy interesante y es muy sencillo y la idea me la dio mi jefe cuando me dije: "Mostra lo que necesitas"
El lunes temprano posteo el codigo para que este disponible, ya que esta en el trabajo y no en mi casa.
Saludos y muchas gracias por tu colaboracion.
|
|
|
En línea
|
|
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
Lo prometido es deuda. En el Load del formulario: Dim Host As String = "tuservidor" Dim con As New OleDb.OleDbConnection("Provider=SQLOLEDB; Data Source=" & Host & "; Initial Catalog=TuBase; integrated security=SSPI; persist security info=True;")
Dim da As OleDb.OleDbDataAdapter Dim dtb As DataTable Dim a As Integer
Dim Codigo As String
da = New OleDb.OleDbDataAdapter("select * from dimtempcustomer where dimt_padre=''", con) dtb = New DataTable da.Fill(dtb)
TreeView1.Nodes.Add(Trim("[" & dtb.Rows(a)("dimt_codigo").ToString) & "]-- " & Trim(dtb.Rows(0)("dimt_descripcion").ToString)) Codigo = Trim(dtb.Rows(0)("dimt_codigo").ToString)
En el evento DoubleClick del TreeView: Dim Host As String = "tuservidor" Dim con As New OleDb.OleDbConnection("Provider=SQLOLEDB; Data Source=" & Host & "; Initial Catalog=TuBase; integrated security=SSPI; persist security info=True;")
Dim da As OleDb.OleDbDataAdapter Dim dtb As DataTable Dim a, i As Integer Static Cargados As String
Dim Codigo, Descripcion As String Dim parte = Split(TreeView1.SelectedNode.Text, "]-- ") Dim flag = Split(Cargados, "--")
Me.Cursor = Cursors.WaitCursor Codigo = Trim(Mid(parte(0), 2))
For i = 1 To UBound(flag) If Codigo = flag(i) Then Me.Cursor = Cursors.Default Exit Sub End If Next Cargados += "--" & Codigo da = New OleDb.OleDbDataAdapter("select * from dimtempcustomer where dimt_padre='" & Codigo & "'", con) dtb = New DataTable da.Fill(dtb)
For a = 0 To dtb.Rows.Count - 1 Codigo = Trim(dtb.Rows(a)("dimt_codigo").ToString) Descripcion = Trim(dtb.Rows(a)("dimt_descripcion").ToString)
TreeView1.SelectedNode.Nodes.Add("[" & Codigo & "]-- " & Descripcion) Next TreeView1.SelectedNode.Expand() Me.Cursor = Cursors.Default
Lo de la conexion se puede arreglar para que sea menos codigo. Espero les sirva el codigo, le agradezco mucho a hadess_inf por responder mis preguntas. Gracias.
|
|
|
En línea
|
|
|
|
gusman
|
Usa TreeView1.BeginUpdate() antes de comenzar a actualizar el treeview y TreeView1.EndUpdate() cuando acabes, de esta forma evitas que se redibuje el control mientras estás añadiendo nuevos elementos.
Un saludo
|
|
|
En línea
|
No está muerto todo lo que yace y con extraños evos hasta la misma muerte puede morir.
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
Gracias gusman, ya agregue lo que me sugueriste Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Treeview VB.net
Programación General
|
tazrebelraider
|
0
|
3,494
|
28 Febrero 2012, 05:53 am
por tazrebelraider
|
|
|
treeview.index
.NET (C#, VB.NET, ASP)
|
luismercedesrd
|
1
|
2,302
|
10 Junio 2016, 03:03 am
por AlbertoBSD
|
|
|
Seleccionar Nodo de Treeview
« 1 2 »
Programación Visual Basic
|
jack06
|
10
|
7,548
|
8 Mayo 2017, 21:11 pm
por jack06
|
|
|
Ayuda treeview
.NET (C#, VB.NET, ASP)
|
alexlopez91
|
1
|
2,488
|
18 Agosto 2017, 00:23 am
por Hadess_inf
|
|
|
TreeView y FullPath
Programación Visual Basic
|
temisto
|
0
|
1,556
|
13 Enero 2018, 22:48 pm
por temisto
|
|