Foros del Web » Programando para Internet » ASPX (.net) »

tree view con checkbox

Estas en el tema de tree view con checkbox en el foro de ASPX (.net) en Foros del Web. hola que tal Alguien me puede ayudar en un treeview que en sus nodos tienen checkbox y en el control treeview tiene nodos padres,hijos y ...
  #1 (permalink)  
Antiguo 03/12/2010, 15:57
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 5 meses
Puntos: 0
tree view con checkbox

hola que tal
Alguien me puede ayudar en un treeview que en sus nodos tienen checkbox y en el control treeview tiene nodos padres,hijos y nietos lo que busco es que al momento de seleccionar un padre automaticamente se me seleccionen los hijos y nietos si es que tienen y viceversa cuando descelecciones un padre los nodos hijo y nieto tambien se desmarquen, y la otra es cuando los nodos estan vacios y seleccione un nieto se me seleccione el hijo y el padre, por fa si halguien me puede ayudar con esto espero respuestas es algo urgente


Nota: cuando digo selecionar o desceleccionar quiere decir que los checkbox estan en true o en false.estoy trabajando en asp net con cs
  #2 (permalink)  
Antiguo 03/12/2010, 16:44
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: tree view con checkbox

Cita:
Iniciado por slimnot4 Ver Mensaje
hola que tal
Alguien me puede ayudar en un treeview que en sus nodos tienen checkbox y en el control treeview tiene nodos padres,hijos y nietos lo que busco es que al momento de seleccionar un padre automaticamente se me seleccionen los hijos y nietos si es que tienen y viceversa cuando descelecciones un padre los nodos hijo y nieto tambien se desmarquen, y la otra es cuando los nodos estan vacios y seleccione un nieto se me seleccione el hijo y el padre, por fa si halguien me puede ayudar con esto espero respuestas es algo urgente


Nota: cuando digo selecionar o desceleccionar quiere decir que los checkbox estan en true o en false.estoy trabajando en asp net con cs
Así como lo mencionas , solo es checar la propiedad Childnode del nodo que seleccionaste y con un foreach marcar o desmarcar cada elemento.

y para marcar los padres , la propiedad es parentnode ( creo )
  #3 (permalink)  
Antiguo 06/12/2010, 11:19
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: tree view con checkbox

ok muchas gracias por la atencion voy a checar eso y nuevamente gracias
  #4 (permalink)  
Antiguo 06/12/2010, 17:17
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: tree view con checkbox

Hola que tal aqui les dejo un scrip muy bueno que me ayudo a solucionar el problema de las selecciones del treeview con checkbox la primera parte
function client_OnTreeNodeChecked()
{
var obj = window.event.srcElement;
var treeNodeFound = false;
var checkedState;

if (obj.tagName == "INPUT" && obj.type == "checkbox")
{
var treeNode = obj;
checkedState = treeNode.checked;
do
{
obj = obj.parentElement;
} while (obj.tagName != "TABLE")

var parentTreeLevel = obj.rows[0].cells.length;
var parentTreeNode = obj.rows[0].cells[0];
var tables = obj.parentElement.getElementsByTagName("TABLE");
if(obj.tagName == "TABLE")
{
if (treeNode.checked)
{
var head1 = obj.parentElement.previousSibling;
if(head1!=null)
{
if(head1.tagName == "TABLE")
{
var matchElement1 = head1.getElementsByTagName("INPUT"); //matchElement1[0] gives us the checkbox and it is checked
if(matchElement1.length>0)
matchElement1[0].checked = true;
}
}
else
{
head1 = obj.parentElement.previousSibling;
}
if(head1!=null)
{
if(head1.tagName == "TABLE")
{
var head2 = obj.parentElement.parentElement.previousSibling;
if(head2!=null)
{
if(head2.tagName == "TABLE")
{
var matchElement2 = head2.getElementsByTagName("INPUT");
if(matchElement2.length>0)
matchElement2[0].checked = true;
}
}
}
}
else
{
head2 = obj.parentElement.previousSibling;
}
if(head2!=null)
{
if(head2.tagName == "TABLE")
{
var head3 = obj.parentElement.parentElement.parentElement.prev iousSibling;
if(head3!=null)
{
if(head3.tagName == "TABLE")
{
var matchElement3 = head3.getElementsByTagName("INPUT");
if(matchElement3.length>0)
matchElement3[0].checked = true;
}
}
}
}
else
{
head3 = obj.parentElement.previousSibling;
}
if(head3!=null)
{
if(head3.tagName == "TABLE")
{
var head4 = obj.parentElement.parentElement.parentElement.pare ntElement.previousSibling;
if(head4 != null)
{
if(head4.tagName == "TABLE")
{
var matchElement4 = head4.getElementsByTagName("INPUT");
if(matchElement4.length>0)
matchElement4[0].checked = true;
}
}
}
}
}//end if - checked
if (!treeNode.checked) {
var chk1 = false;
head1 = obj.parentElement.previousSibling;
var pTreeLevel1 = obj.rows[0].cells.length;
if(head1!=null)
{
if(head1.tagName == "TABLE")
{
var tbls = obj.parentElement.getElementsByTagName("TABLE");
var tblsCount = tbls.length;
for (i=0; i < tblsCount; i++)
{
var childTreeLevel = tbls[i].rows[0].cells.length;
if (childTreeLevel == pTreeLevel1)
{
var chld = tbls[i].getElementsByTagName("INPUT");
if(chld.length>0)
{
if (chld[0].checked == true)
{
chk1 = true;
break;
}
}
}
}
var nd = head1.getElementsByTagName("INPUT");
if(nd.length>0)
{
nd[0].checked = chk1;
}
}
}
  #5 (permalink)  
Antiguo 06/12/2010, 17:18
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: tree view con checkbox

aqui va la segunda parte disculpen por ponerlo asi pero el foro tiene restricion de caracteres.


else
{
head1 = obj.parentElement.previousSibling;
}
var chk2 = false;
if(head1!=null)
{
if(head1.tagName == "TABLE")
{
head2 = obj.parentElement.parentElement.previousSibling;
if(head2!=null)
{
if(head2.tagName == "TABLE")
{
tbls = head1.parentElement.getElementsByTagName("TABLE");
var pTreeLevel2 = head1.rows[0].cells.length;
tblsCount = tbls.length;
for (i=0; i < tblsCount; i++)
{
childTreeLevel = tbls[i].rows[0].cells.length;
if (childTreeLevel == pTreeLevel2)
{
chld = tbls[i].getElementsByTagName("INPUT");
if(chld.length>0)
{
if (chld[0].checked == true)
{
chk2 = true;
break;
}
}
}
}
nd = head2.getElementsByTagName("INPUT");
if(nd.length>0)
{
nd[0].checked = (chk2 && chk1);
}
}
}
}
}
else
{
head2 = obj.parentElement.previousSibling;
}
var chk3 = false;
if(head2!=null)
{
if(head2.tagName == "TABLE")
{
head3 = obj.parentElement.parentElement.parentElement.prev iousSibling;
if(head3!=null)
{
if(head3.tagName == "TABLE")
{
tbls = head2.parentElement.getElementsByTagName("TABLE");
var pTreeLevel3 = head2.rows[0].cells.length;
tblsCount = tbls.length;
for (i=0; i < tblsCount; i++)
{
childTreeLevel = tbls[i].rows[0].cells.length;
if (childTreeLevel == pTreeLevel3)
{
chld = tbls[i].getElementsByTagName("INPUT");
if(chld.length>0)
{
if (chld[0].checked == true)
{
chk3 = true;
break;
}
}
}
}
nd = head3.getElementsByTagName("INPUT");
if(nd.length>0)
{
nd[0].checked = (chk3 && chk2 && chk1);
}
}
}
}
}
else
{
head3 = obj.parentElement.previousSibling;
}
var chk4 = false;
if(head3!=null)
{
if(head3.tagName == "TABLE")
{
head4 = obj.parentElement.parentElement.parentElement.pare ntElement.previousSibling;
if(head4!=null)
{
if(head4.tagName == "TABLE")
{
tbls = head3.parentElement.getElementsByTagName("TABLE");
var pTreeLevel4 = head3.rows[0].cells.length;
tblsCount = tbls.length;
for (i=0; i < tblsCount; i++)
{
childTreeLevel = tbls[i].rows[0].cells.length;
if (childTreeLevel == pTreeLevel4)
{
chld = tbls[i].getElementsByTagName("INPUT");
if(chld.length>0)
{
if (chld[0].checked == true)
{
chk4 = true;
break;
}
}
}
}
nd = head4.getElementsByTagName("INPUT");
if(nd.length>0)
{
nd[0].checked = (chk4 && chk3 && chk2 && chk1);
}
}
}
}
}
} }
var numTables = tables.length
if (numTables >= 1)
{
for (i=0; i < numTables; i++)
{
if (tables[i] == obj)
{
treeNodeFound = true;
i++;
if (i == numTables)
{
return;
}
}
if (treeNodeFound == true)
{
childTreeLevel = tables[i].rows[0].cells.length;
if (childTreeLevel > parentTreeLevel)
{
var cell = tables[i].rows[0].cells[childTreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
inputs[0].checked = checkedState;
}
else
{
return;
}
}
}
}
}
}
  #6 (permalink)  
Antiguo 15/12/2010, 15:49
 
Fecha de Ingreso: noviembre-2010
Mensajes: 24
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: tree view con checkbox

hola de nuevo
pues me encontre con un problema con el script que les puse arriba ya que en mi caso el treeview que se maneja tiene tres niveles entonces el padre tiene dos nodos hijos que a su ves tiene dos nietos cada uno, y por ejemplo si seleciono un nieto de cada hijo pues todo perfecto pero cuando deselecciono alguno de los nietos se me deselecciona hasta el padre cosa que no debe de hacer ya que hay un nodo nieto que esta selecionado, alguien puede ayudarme para evitar eso, ya que no le entiendo muy bien al script, Gracias.
otra pregunta se solucionaria esto si manejara recursividad si es asi como, u otra se puden implementar plugings en asp net si es asi como, bueno garcias y espero ideas, comentarios.

Etiquetas: checkbox, tree, view, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:20.