Foros del Web » Programación para mayores de 30 ;) » .NET »

treeview y viewstate

Estas en el tema de treeview y viewstate en el foro de .NET en Foros del Web. Hola! Tengo un treeview definido para carga de nodos sobre demanda, lo que hace es ir cargando bajo demanda directorios y archivos que cuelgan de ...
  #1 (permalink)  
Antiguo 22/07/2009, 02:06
 
Fecha de Ingreso: julio-2009
Mensajes: 1
Antigüedad: 14 años, 9 meses
Puntos: 0
treeview y viewstate

Hola!

Tengo un treeview definido para carga de nodos sobre demanda, lo que hace es ir cargando bajo demanda directorios y archivos que cuelgan de uno base, mediante la propiedad onTreeNodePopulate los cargo según se expande el árbol, el código es el siguiente:

ASP:
<asp:UpdatePanel ID="treePanel" runat="server" UpdateMode="Conditional" ><ContentTemplate>
<asp:treeview ID="tree" runat="server" ExpandDepth="0" OnTreeNodePopulate="Treeview1_TreeNodePopulate" ShowCheckBoxes="All" ShowLines="true" Enabled="true" Visible="true" EnableClientScript="true"/>
</ContentTemplate></asp:UpdatePanel>


C#:
protected void Treeview1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
if (e.Node.ChildNodes.Count == 0)
{
LoadChildNode(e.Node);
}
treePanel.Update();
}

protected void LoadChildNode(System.Web.UI.WebControls.TreeNode node)
{
DirectoryInfo directory = new DirectoryInfo(node.Value);

foreach (DirectoryInfo sub in directory.GetDirectories())
{
System.Web.UI.WebControls.TreeNode subNode = new System.Web.UI.WebControls.TreeNode(sub.Name);
subNode.Value = sub.FullName;
if (sub.GetDirectories().Length > 0 || sub.GetFiles().Length > 0)
{
subNode.SelectAction = TreeNodeSelectAction.SelectExpand;
subNode.PopulateOnDemand = true;
}
subNode.NavigateUrl = "#";
subNode.ShowCheckBox = true;
tree.Nodes.Add(subNode);
node.ChildNodes.Add(subNode);
}
foreach (FileInfo fi in directory.GetFiles())
{
System.Web.UI.WebControls.TreeNode subNode = new System.Web.UI.WebControls.TreeNode(fi.Name);
subNode.Value = fi.FullName;
subNode.ShowCheckBox = true;
subNode.NavigateUrl = "#";
subNode.PopulateOnDemand = false;

node.ChildNodes.Add(subNode);
}
tree.ShowCheckBoxes = TreeNodeTypes.All;
treePanel.Update();
}


Hasta aquí todo perfecto, el problema viene cuando expando bastantes nodos y quiero hacer alguna operación con el árbol, por ejemplo limpiar los nodos que estén marcados, lo hago con el siguiente código:

for (int i = tree.CheckedNodes.Count-1; i >=0 ;i-- )
{
tree.CheckedNodes[i].Checked = false;
}
treePanel.Update();


Cuando expando muchos nodos y hago postback, me guarda la información del árbol en la url, ésta se hace demasiado larga para el navegador
y da un error, esto creo que lo hace porque lo guarda en el viewstate, estuve mirando e investigando y no fui capaz de hacer que funcionase. ¿Alguien sabe como hacer que no pase los datos en la url o como solucionar esto? Muchas gracias de antemano.
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 12:32.