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.