InitRefSelect en création

Request description

Bonjour,

Sur un objet lié en N,N pillbox, j’ai codé un filtre dans le InitRefSelect. Il s’appuie sur des attributs de l’objet parent.
Mon souci est qu’en création du parent, lorsque je clique sur la loupe de la pillbox, les champs sur lesquels s’appuient ce filtre sont null et mon filtre tombe en erreur.

Faut-il faire ce code en front ? Ou y a-t-il une autre solution ?

Merci !
Emmanuelle

J’ai contourné en utilisant un paramètre de session.

En front

// When object form is loaded in the container ctn
                p.form.onload = function(ctn, obj, params) {

					// Bind change on a view (V5.2 for N,N pillbox or edit list)
					var sender = ui.getUIField(ctn, obj, "rciFloAppSenderId");
					var recept = ui.getUIField(ctn, obj, "rciFloAppReceptId");

                    var subsView = ui.getUIView(ctn, obj, "RciFloSub;rciFlosubFloId") ;
                    
                    enableSubsView(sender, recept, subsView);
                    
                    sender && sender.ui.change(function(e) {
                    	$ui.grant.setParameter("FLOW_SENDER_ID", sender.value());
                    	
                    	enableSubsView(sender, recept, subsView);	
                    });
                    
                    recept && recept.ui.change(function(e) {
                    	$ui.grant.setParameter("FLOW_RECEPT_ID", recept.value());
                    	
                    	enableSubsView(sender, recept, subsView);
                    });
                }

En back

@Override
	public void initRefSelect(ObjectDB parent) {

		resetSelectedIds();

		if (parent.getName().equals("RciFlow"))
		{
			String senderId = parent.getFieldValue("rciFloAppSenderId"), receptId = parent.getFieldValue("rciFloAppReceptId");
			if (senderId == null || senderId.isEmpty())
			{
				senderId = getGrant().getParameter("FLOW_SENDER_ID");
			}
			
			if (receptId == null || receptId.isEmpty())
			{
				receptId = getGrant().getParameter("FLOW_RECEPT_ID");
			}
			
			String req = " AND (t.row_id in (select rci_appsub_sub_id from rci_app_sub where rci_appsub_app_id = " + receptId
				+ " ) OR NOT EXISTS (select rci_appsub_sub_id from rci_app_sub where rci_appsub_app_id = " + receptId
				+ " )) AND (t.row_id in (select rci_appsub_sub_id from rci_app_sub where rci_appsub_app_id = " + senderId
				+ " ) OR NOT EXISTS (select rci_appsub_sub_id from rci_app_sub where rci_appsub_app_id = " + senderId + "))";

			this.setSearchSpec(getDefaultSearchSpec() + req);
			
		}
		else
			this.setSearchSpec(getDefaultSearchSpec());

		super.initRefSelect(parent);
	}

Maintenant il me reste à trouver comment bloquer l’utilisation de la pillbox si les champs nécessaires ne sont pas remplis (voir Mettre une pillbox en lecture seule)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.