I want to add control when I modify the "Product lifecycle state" :

I add on validating eventHandler on dataField in dataSource :
[FormDataFieldEventHandler(formDataFieldStr(EcoResProductDetailsExtended, InventTable, ProductLifecycleStateId), FormDataFieldEventType::Validating)]
public static void ProductLifecycleStateId_OnValidating(FormDataObject sender, FormDataFieldEventArgs e)
{
var args = e as FormDataFieldCancelEventArgs;
SysTableIdView tableId;
EcoResProductCategory productCategory;
PdsApprovedVendorList approvedVendorList;
FormDataSource InventTable_ds = sender.datasource();
InventTable inventTable = InventTable_ds.cursor();
EcoResProductLifecycleState productLifeCycleState = EcoResProductLifecycleState::find(inventTable.ProductLifecycleStateId);
CorollaryTable corollaryTable ;
boolean ret;
while select * from corollaryTable where corollaryTable.StateId == productLifeCycleState.StateId
{
if(corollaryTable)
{
select Name from tableId where tableId.Id == corollaryTable.TableNum;
switch (tableId.Name)
{
case "EcoResProductCategory" :
select Product from productCategory where productCategory.Product == InventTable.Product;
if(!productCategory)
{
ret = checkFailed("La table " corollaryTable.TableLabel " n'est pas renseignée !");
args.cancel(true);
}
break;
case "PdsApprovedVendorList" :
select ItemId from approvedVendorList where approvedVendorList.ItemId == InventTable.ItemId;
if(!approvedVendorList)
{
ret = checkFailed("La table " corollaryTable.TableLabel " n'est pas renseignée !");
args.cancel(true);
}
break;
}
}
}
}I get the new selected value ,
but I want to keep the old value of this field ,
