jose antonio
Top achievements
Rank 1
jose antonio
asked on 14 Dec 2010, 04:24 PM
Hi, I have a problem with a Radtreeview in a masterPage, I try to save the expanded nodes state in a Session variable and shows me InvalidOperationException and cannot create the xml file.
Session("myTreeView") = Tree1.GetXml
I want to save the treeview state and load it in other page like the nodes where in the first page.
Could you help me?
Thanks.
Session("myTreeView") = Tree1.GetXml
I want to save the treeview state and load it in other page like the nodes where in the first page.
Could you help me?
Thanks.
3 Answers, 1 is accepted
0
jose antonio
Top achievements
Rank 1
answered on 14 Dec 2010, 08:50 PM
I try to use the cookies code examples and nothing happens. This is my masterPage code. The error appears at the end of the code when I try to save in xml file the nodes.
Partial
Class
AbismoNet_master_MasterPage3
Inherits
System.Web.UI.MasterPage
Protected
Sub
Page_Load(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
Me
.Load
If
Not
IsPostBack
Then
Tree1.Nodes.Clear()
Dim
varExplot
As
String
= Session(
"Id_fabrica"
)
Dim
sql
As
String
=
""
Dim
connection
As
SqlConnection =
New
SqlConnection(Session(
"Conexion"
))
sql =
"SELECT * FROM wgm.V_BUSCAR_FABRICAS WHERE ID_FABRICA="
& varExplot &
" "
Dim
adapter
As
New
SqlDataAdapter(sql, connection)
Dim
dataTable
As
New
DataTable()
'PanelArbol.Visible = True
adapter.Fill(dataTable)
For
Each
row
As
DataRow
In
dataTable.Rows
Dim
node
As
New
RadTreeNode()
node.Text = row(
"NOMBRE_FCA"
).ToString()
node.Value = row(
"ID_FABRICA"
).ToString()
node.ExpandMode =
True
node.Expanded =
True
node.ExpandMode = TreeNodeExpandMode.ServerSide
Tree1.Nodes.Add(node)
Next
LoadRootNodes(Tree1)
End
If
End
Sub
Private
Sub
LoadRootNodes(
ByVal
treeView
As
RadTreeView)
Dim
varExplot
As
String
= Session(
"Id_fabrica"
)
Dim
sql
As
String
=
""
Dim
connection
As
SqlConnection =
New
SqlConnection(Session(
"Conexion"
))
sql =
"SELECT * FROM wgm.V_BUSCAR_ZONAS WHERE ID_FABRICA="
& varExplot &
" "
Dim
adapter
As
New
SqlDataAdapter(sql, connection)
Dim
dataTable
As
New
DataTable()
'PanelArbol.Visible = True
adapter.Fill(dataTable)
For
Each
row
As
DataRow
In
dataTable.Rows
Dim
node
As
New
RadTreeNode()
node.Text = row(
"NOMBRE"
).ToString()
node.Value = row(
"ID_ZONA"
).ToString()
node.ImageUrl =
"~/Abismonet/img/Z.png"
node.ExpandMode = TreeNodeExpandMode.ServerSide
node.ExpandMode =
True
Tree1.Nodes.Add(node)
Next
'CargarMenu()
End
Sub
Protected
Sub
Tree1_NodeClick(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.RadTreeNodeEventArgs)
Handles
Tree1.NodeClick
Dim
i
As
Integer
= e.Node.Level
Select
Case
i
Case
0
If
e.Node.Nodes.Count > 0
Then
Exit
Sub
End
If
Dim
sql
As
String
sql =
"SELECT SECCIONES.ID_SECCION AS NodeId, SECCIONES.NOMBRE AS NodeText, "
sql = sql &
" COUNT(SECCIONES.ID_SECCION) AS ChildCount FROM wgm.SECCIONES WHERE"
sql = sql &
" SECCIONES.ID_ZONA = @parentId AND ID_FABRICA = "
& Session(
"Id_fabrica"
) &
" GROUP BY SECCIONES.ID_SECCION,SECCIONES.NOMBRE"
Dim
connection
As
SqlConnection =
New
SqlConnection(Session(
"Conexion"
))
Dim
adapter
As
New
SqlDataAdapter(sql, connection)
adapter.SelectCommand.Parameters.AddWithValue(
"parentId"
, e.Node.Value)
Dim
dataTable
As
New
DataTable()
adapter.Fill(dataTable)
For
Each
row
As
DataRow
In
dataTable.Rows
Dim
node
As
New
RadTreeNode()
node.Text = row(
"NodeText"
).ToString()
node.Value = row(
"NodeId"
).ToString()
node.ImageUrl =
"~/Abismonet/img/S.png"
If
Convert.ToInt32(row(
"ChildCount"
)) > 0
Then
node.ExpandMode = TreeNodeExpandMode.ServerSide
End
If
e.Node.Nodes.Add(node)
Next
Case
1
If
e.Node.Nodes.Count > 0
Then
Exit
Sub
End
If
Dim
sql
As
String
sql =
"SELECT DEPARTAMENTOS.ID_DEPARTAMENTO AS NodeId, DEPARTAMENTOS.NOMBRE AS NodeText,"
sql = sql &
" COUNT(DEPARTAMENTOS.ID_DEPARTAMENTO) AS ChildCount FROM wgm.DEPARTAMENTOS"
sql = sql &
" WHERE DEPARTAMENTOS.ID_SECCION = @parentId AND ID_FABRICA = "
& Session(
"Id_fabrica"
) &
""
sql = sql &
"GROUP BY DEPARTAMENTOS.ID_DEPARTAMENTO,DEPARTAMENTOS.NOMBRE"
Dim
connection
As
SqlConnection =
New
SqlConnection(Session(
"Conexion"
))
Dim
adapter
As
New
SqlDataAdapter(sql, connection)
adapter.SelectCommand.Parameters.AddWithValue(
"parentId"
, e.Node.Value)
Dim
dataTable
As
New
DataTable()
adapter.Fill(dataTable)
For
Each
row
As
DataRow
In
dataTable.Rows
Dim
node
As
New
RadTreeNode()
node.Text = row(
"NodeText"
).ToString()
node.Value = row(
"NodeId"
).ToString()
node.ImageUrl =
"~/Abismonet/img/D.png"
If
Convert.ToInt32(row(
"ChildCount"
)) > 0
Then
node.ExpandMode = TreeNodeExpandMode.ServerSide
End
If
e.Node.Nodes.Add(node)
Next
Case
2
If
e.Node.Nodes.Count > 0
Then
Exit
Sub
End
If
Dim
sql
As
String
sql =
"SELECT MAQUINAS.ID_MAQUINA AS NodeId, MAQUINAS.NOMBRE AS NodeText, "
sql = sql &
" COUNT(MAQUINAS.ID_MAQUINA) AS ChildCount FROM wgm.MAQUINAS WHERE "
sql = sql &
"MAQUINAS.ID_DEPARTAMENTO = @parentId AND ID_FABRICA = "
& Session(
"Id_fabrica"
) &
" GROUP BY MAQUINAS.ID_MAQUINA,MAQUINAS.NOMBRE"
Dim
connection
As
SqlConnection =
New
SqlConnection(Session(
"Conexion"
))
Dim
adapter
As
New
SqlDataAdapter(sql, connection)
adapter.SelectCommand.Parameters.AddWithValue(
"parentId"
, e.Node.Value)
Dim
dataTable
As
New
DataTable()
adapter.Fill(dataTable)
For
Each
row
As
DataRow
In
dataTable.Rows
Dim
node
As
New
RadTreeNode()
node.Text = row(
"NodeText"
).ToString()
node.Value = row(
"NodeId"
).ToString()
node.ImageUrl =
"~/Abismonet/img/M.png"
If
Convert.ToInt32(row(
"ChildCount"
)) > 0
Then
node.ExpandMode = TreeNodeExpandMode.ServerSide
End
If
e.Node.Nodes.Add(node)
Next
'btnImprimir.Visible = True
Case
3
If
e.Node.Nodes.Count > 0
Then
Exit
Sub
End
If
Dim
sql
As
String
sql =
"SELECT EQUIPOS.ID_EQUIPO AS NodeId, EQUIPOS.NOMBRE AS NodeText, COUNT(EQUIPOS.ID_EQUIPO)"
sql = sql &
" AS ChildCount FROM wgm.EQUIPOS WHERE EQUIPOS.ID_MAQUINA = @parentId "
sql = sql &
" AND ID_FABRICA = "
& Session(
"Id_fabrica"
) &
" GROUP BY EQUIPOS.ID_EQUIPO,EQUIPOS.NOMBRE"
Dim
connection
As
SqlConnection =
New
SqlConnection(Session(
"Conexion"
))
Dim
adapter
As
New
SqlDataAdapter(sql, connection)
adapter.SelectCommand.Parameters.AddWithValue(
"parentId"
, e.Node.Value)
Dim
dataTable
As
New
DataTable()
adapter.Fill(dataTable)
For
Each
row
As
DataRow
In
dataTable.Rows
Dim
node
As
New
RadTreeNode()
node.Text = row(
"NodeText"
).ToString()
node.Value = row(
"NodeId"
).ToString()
node.ImageUrl =
"~/Abismonet/img/E.png"
If
Convert.ToInt32(row(
"ChildCount"
)) > 0
Then
node.ExpandMode = TreeNodeExpandMode.ServerSide
End
If
e.Node.Nodes.Add(node)
Next
End
Select
e.Node.Expanded =
True
e.Node.ExpandMode = TreeNodeExpandMode.ClientSide
e.Node.PostBack =
False
End
Sub
Protected
Sub
Tree1_NodeDrop(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.RadTreeNodeDragDropEventArgs)
If
e.HtmlElementID =
"ctl00_txtDrag"
Then
For
Each
node
As
RadTreeNode
In
e.DraggedNodes
txtDrag.Text = node.Value
Session(
"IdActivo"
) = node.Value
txtDrag.
ReadOnly
=
True
Label1.Text = node.Text
Session(
"Nivel"
) = node.Level
Next
If
Session(
"IdActivo"
) = Session(
"Id_fabrica"
)
Then
Session(
"myTreeView"
) = Tree1.GetXml
Response.Redirect(
"Fabricas.aspx"
)
End
If
end
Sub
0
Hi Jose,
Please try to attach to the NodeExpand server event and add the text and the value of the expanded nodes to the session. Then in the other page you may traverse trough all nodes, filter the expanded by value which is saved in the session and explicitly expand them.
Regards,
Helen
the Telerik team
Please try to attach to the NodeExpand server event and add the text and the value of the expanded nodes to the session. Then in the other page you may traverse trough all nodes, filter the expanded by value which is saved in the session and explicitly expand them.
Regards,
Helen
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
0
jose antonio
Top achievements
Rank 1
answered on 20 Dec 2010, 09:35 AM
Ok, thanks for show me the road, Now I can save nodes.
Best Regards.
Best Regards.