Hi,
I have a Treeview which is loading from a webserver, which works perfectly. I currently have it connected to a AJAX manager. For renameing of nodes it works perfectly.
For drag and drop I have connected the relevant events up to update my database, which works fine. I can only get the treeview to update by doing a full page refresh.
I have used the methods on the server as described in this thread ( http://www.telerik.com/community/forums/aspnet-ajax/treeview/radtreeview-drag-drop-serverside.aspx ) but after moving a node - it does not reflect its new position until i force a full page refresh.
here is the markup for the treeview
page load
and the drag drop functions
any help would be appreciated.
I have a Treeview which is loading from a webserver, which works perfectly. I currently have it connected to a AJAX manager. For renameing of nodes it works perfectly.
For drag and drop I have connected the relevant events up to update my database, which works fine. I can only get the treeview to update by doing a full page refresh.
I have used the methods on the server as described in this thread ( http://www.telerik.com/community/forums/aspnet-ajax/treeview/radtreeview-drag-drop-serverside.aspx ) but after moving a node - it does not reflect its new position until i force a full page refresh.
here is the markup for the treeview
| <telerik:RadTreeView runat="server" ID="Treeview" AllowNodeEditing="True" |
| EnableDragAndDrop="True" EnableDragAndDropBetweenNodes="True" OnClientNodeClicking="onNodeClicking" |
| onnodedrop="Treeview_NodeDrop" onnodeedit="Treeview_NodeEdit" |
| CheckBoxes="False"> |
| <WebServiceSettings Path="WebServices/GroupsDataSource.asmx" Method="GetGroupNodes" /> |
| </telerik:RadTreeView> |
page load
| protected void Page_Load(object sender, EventArgs e) |
| { |
| if (Request.Browser.Browser == "Firefox") |
| Response.Cache.SetNoStore(); |
| if ((bool)Session["LoggedIn"] == false) |
| Response.Redirect("Default.aspx?referer=" + Request.FilePath); |
| if (!IsPostBack) |
| { |
| LoadRootNodes(Treeview, TreeNodeExpandMode.WebService); |
| } |
| } |
| private void LoadRootNodes(RadTreeView treeView, TreeNodeExpandMode expandMode) |
| { |
| WebSession webSess = (WebSession)Session["WebSession"]; |
| string qry = string.Format(DB.SQLSelectHeirachyMoveNull, ConfigurationConsts.ExtensionGroupViewId); |
| DataTable dtGroups = webSess.DataSource.RetrieveDataTable(qry); |
| foreach (DataRow aRow in dtGroups.Rows) |
| { |
| RadTreeNode newNode = new RadTreeNode(); |
| newNode.Text = aRow["NAME"].ToString(); |
| newNode.Value = aRow["ID"].ToString(); |
| newNode.Attributes.Add("GROUPVIEWID", Convert.ToString(aRow["GROUPVIEWID"])); |
| newNode.ExpandMode = TreeNodeExpandMode.WebService; |
| treeView.Nodes.Add(newNode); |
| } |
| } |
and the drag drop functions
| protected void Treeview_NodeDrop(object sender, RadTreeNodeDragDropEventArgs e) |
| { |
| WebSession webSess = (WebSession)Session["WebSession"]; |
| webSess.MasterSystem.GroupsSystem.MoveNode(e.SourceDragNode.Value,e.DestDragNode.Value); |
| RadTreeNode sourceNode = e.SourceDragNode; |
| RadTreeNode destNode = e.DestDragNode; |
| RadTreeViewDropPosition dropPosition = e.DropPosition; |
| if (destNode != null) //drag&drop is performed between trees |
| { |
| if (sourceNode.TreeView.SelectedNodes.Count <= 1) |
| { |
| PerformDragAndDrop(dropPosition, sourceNode, destNode); |
| } |
| else if (sourceNode.TreeView.SelectedNodes.Count > 1) |
| { |
| foreach (RadTreeNode node in sourceNode.TreeView.SelectedNodes) |
| { |
| PerformDragAndDrop(dropPosition, node, destNode); |
| } |
| } |
| destNode.Expanded = true; |
| } |
| } |
| private void PerformDragAndDrop(RadTreeViewDropPosition dropPosition, RadTreeNode sourceNode, |
| RadTreeNode destNode) |
| { |
| if (sourceNode.Equals(destNode) || sourceNode.IsAncestorOf(destNode)) |
| { |
| return; |
| } |
| sourceNode.Owner.Nodes.Remove(sourceNode); |
| switch (dropPosition) |
| { |
| case RadTreeViewDropPosition.Over: |
| // child |
| if (!sourceNode.IsAncestorOf(destNode)) |
| { |
| destNode.Nodes.Add(sourceNode); |
| } |
| break; |
| case RadTreeViewDropPosition.Above: |
| // sibling - above |
| destNode.InsertBefore(sourceNode); |
| break; |
| case RadTreeViewDropPosition.Below: |
| // sibling - below |
| destNode.InsertAfter(sourceNode); |
| break; |
| } |
| } |
any help would be appreciated.