Consultor Eletrônico



Kbase P18774: PRG nodes in treeview are not removed from ttNode temp-table
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/16/2008
Status: Unverified

FACT(s) (Environment):

Dynamics 2.0a

SYMPTOM(s):

PRG nodes in treeview are not removed from ttNode temp-table

When you use PRG nodes 'deleteNode' clears the nodes displayed by the treeview itself, but they are not removed from the temp-table ttNode. As a result after refreshing the treeview the "old" nodes are displayed again, which is not the expected behaviour.

FIX:

Possible workaround:
Altered code :
...
chTreeView:Nodes:Remove(pcKey) NO-ERROR.

ELEASE OBJECT chtreeView NO-ERROR.

/* Delete node and his subnodes from treeview temp-table 'phTreeDataTable'*/
{get TreeDataTable phTreeDataTable TARGET-PROCEDURE}.
hBuf = phTreeDataTable:DEFAULT-BUFFER-HANDLE.
hBuf:FIND-FIRST(SUBSTITUTE("where &1.node_key EQ &2":u, hBuf:NAME, pckey), NO-LOCK) NO-ERROR.
IF hBuf:AVAILABLE THEN DO:
RUN deleteSubnodesInTDT (hBuf:BUFFER-FIELD("node_key":u):BUFFER-VALUE, phTreeDataTable).
hBuf:BUFFER-DELETE.
END.


END PROCEDURE.


PROCEDURE deleteSubnodesInTDT.
/*------------------------------------------------------------------------------
Purpose: Delete nodes in temp-table 'parent_node_key'
Parameters: <none>
Notes:
------------------------------------------------------------------------------*/
DEFINE INPUT PARAMETER pckey AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER phTreeDataTable AS HANDLE NO-UNDO.

DEFINE VARIABLE hBuf AS HANDLE NO-UNDO.
DEFINE VARIABLE hQry AS HANDLE NO-UNDO.
DEFINE VARIABLE hNodeKey AS HANDLE NO-UNDO.

CREATE BUFFER hBuf FOR TABLE phTreeDataTable:DEFAULT-BUFFER-HANDLE.
hNodeKey = hBuf:BUFFER-FIELD("node_key":u).
CREATE QUERY hQry.
hQry:SET-BUFFERS(hBuf).
hQry:QUERY-PREPARE(SUBSTITUTE("for each &1 where &1.parent_node_key EQ ~"&2~"":u, hBuf:NAME, pckey)).
hQry:QUERY-OPEN().
hQry:GET-FIRST(NO-LOCK).
DO WHILE hBuf:AVAILABLE:
RUN deleteSubnodesInTDT (hNodeKey:BUFFER-VALUE, phTreeDataTable).
hBuf:BUFFER-DELETE().
hQry:GET-NEXT(NO-LOCK).
END.
DELETE OBJECT hQry.
DELETE OBJECT hBuf.

END PROCEDURE.


Development aware of issue.