private void _TreeNodeDeleteBgr(DxTreeViewNodeArgs args) { string nodeKey = args.NodeItemInfo.NodeId; System.Threading.Thread.Sleep(720); // Něco jako uděláme... _TreeList.RemoveNode(nodeKey); }
private void _TreeNodeEditedBgr(DxTreeViewNodeArgs args) { var nodeInfo = args.NodeItemInfo; string nodeKey = nodeInfo.NodeId; string parentKey = nodeInfo.ParentNodeId; string oldValue = nodeInfo.Text; string newValue = (args.EditedValue is string text ? text : ""); _AddLogLine($"Změna textu pro node '{nodeKey}': '{oldValue}' => '{newValue}'"); System.Threading.Thread.Sleep(720); // Něco jako uděláme... if (String.IsNullOrEmpty(newValue)) { // Delete node: if (nodeInfo.CanDelete) { _TreeList.RemoveNode(nodeKey); } } else if (oldValue == "") { // Insert node: _TreeList.RunInLock(new Action <NodeItemInfo>(node => { // V jednom vizuálním zámku: _TreeList.RemoveNode(node.NodeId); // Odeberu blank node, to kvůli pořadí: nový blank přidám nakonec // Přidám nový node pro konkrétní text = jakoby záznam: NodeItemInfo newNode = _CreateChildNode(node.ParentNodeId, false); newNode.Text = newValue; _TreeList.AddNode(newNode); // Přidám Blank node, ten bude opět na konci Childs: NodeItemInfo blankNode = _CreateChildNode(node.ParentNodeId, true); _TreeList.AddNode(blankNode); // Aktivuji editovaný node: _TreeList.SelectNode(newNode); } ), nodeInfo); } else { // Edited node: args.NodeItemInfo.Text = newValue + " [OK]"; args.NodeItemInfo.Refresh(); } }
private void _LoadChildNodesFromServerBgr(DxTreeViewNodeArgs args) { string parentKey = args.NodeItemInfo.NodeId; _AddLogLine($"Načítám data pro node '{parentKey}'..."); System.Threading.Thread.Sleep(720); // Něco jako uděláme... // Upravíme hodnoty v otevřeném nodu: string text = args.NodeItemInfo.Text; if (text.EndsWith(" ...")) { args.NodeItemInfo.Text = text.Substring(0, text.Length - 4); args.NodeItemInfo.Refresh(); } // Vytvoříme ChildNodes a zobrazíme je: bool empty = (Data.RandomText.Rand.Next(10) > 7); var nodes = _CreateSampleChilds(parentKey, ItemCountType.Standard); // A pak vyrobíme Child nody _AddLogLine($"Načtena data: {nodes.Count} prvků."); _TreeList.AddLazyLoadNodes(parentKey, nodes); // a pošleme je do TreeView. }
private void _AddLog(string actionName, DxTreeViewNodeArgs args, bool showValue = false) { string value = (showValue ? ", Value: " + (args.EditedValue == null ? "NULL" : "'" + args.EditedValue.ToString() + "'") : ""); _AddLogLine($"{actionName}: Node: {args.NodeItemInfo}{value}"); }
private void _TreeList_NodeDelete(object sender, DxTreeViewNodeArgs args) { _TreeList_AnyAction(sender, args); Data.ThreadManager.AddAction(() => _TreeNodeDeleteBgr(args)); }
private void _TreeList_LazyLoadChilds(object sender, DxTreeViewNodeArgs args) { _TreeList_AnyAction(sender, args); Data.ThreadManager.AddAction(() => _LoadChildNodesFromServerBgr(args)); }
private void _TreeList_AnyAction(object sender, DxTreeViewNodeArgs args) { _AddLog(args.Action.ToString(), args, (args.Action == TreeViewActionType.NodeEdited || args.Action == TreeViewActionType.EditorDoubleClick)); }