Paramétrage de pré filtres sur une vue
Comment paramétrer des pré filtres sur une vue :
Dans Process Studio, paramétrage d'une vue :
Onglet Critère:
Ajouter la balise {PreFilter} juste après la clause Where comme dans l'exemple ci dessous :
SELECT
FRM_Facture.MontantTTC as MtTTC,
FRM_Facture.NumEngagement as NumEngagement,
Documents.creation_date as DateCreation
FROM
Documents
inner join FRM_Facture on FRM_Facture.id_Document = Documents.id
inner join DocumentProcess DP on DP.id_document = Documents.id
WHERE
{PreFilter}
1=1
Onglet Filtre (1ere section):
Mettre la liste des champs à filtrer:
<Text field="Documents.reference" label="Ref IM:"/>
<Text field="FRM_Facture.NumFacture" label="N° Facture :" OperatorDefaultValue="%" />
<Date field="FRM_Facture.DateFacture" label="Date facture :" />
<Text field="FRM_Facture.FseurCode" label="Code Four." ServicePath="~/Custom_Lagardere/WSPrefilterAdmin.asmx" ServiceMethod="GetCodeFournisseurs" />
<Text field="FRM_Facture.FseurNom" label="Fournisseur :" ServicePath="~/Custom_Lagardere/WSPrefilterAdmin.asmx" ServiceMethod="GetFournisseurs" OperatorDefaultValue="%"/>
<Text field="FRM_Facture.SelFluxDispo" label="Flux :" ServicePath="~/Custom_Lagardere/WSPrefilterAdmin.asmx" ServiceMethod="GetFlux" OperatorDefaultValue="%" />
Onglet Code (code étendu)
Dans la seconde partie, ajouter le code suivant pour ne pas charger la vue au démarrage.
protected override void UserOnInit(EventArgs e)
{
loadAtStartup=false;
}
Il est possible de mettre des champs de type Texte et Date ServicePath : permet de mettre un webservice pour alimenter le champ OperatorDefaultValue : permet de définir le mode de recherche par défaut,
% :contient,
[ : commence par
= : est égal
Cas d'utilisation sur des champs multivalués :
Vous devez indiquer, dans l'attribut field du pré-filtre, la table du champ multi-valué (FRM_nom_du_formulaire_FLD_nom_du_champ) et rechercher sur la colonne value de cette table (exemple ci-dessous).
<Text field="FRM_Document_FLD_MonChampMulti.value" label="Ref IM:"/>
Ensuite, il faut ajouter une liaison (inner join) dans votre requête principale (onglet Critère) (exemple ci-dessous).
SELECT id, reference, FRM_Document_FLD_MonChampMulti.value as MonChampMulti
FROM Document D
INNER JOIN FRM_Document F ON F.id_document = D.id
INNER JOIN FRM_Document_FLD_MonChampMulti ON FRM_Document_FLD_MonChampMulti .id_document = D.id
WHERE
`{PreFilter}`
1=1
Fichier(s) à télécharger
📎 Télécharger WSPreFilterAdmin.asmx 📎 Télécharger WSPrefilter.asmx
Demande de révision :
DR-2022-00850
Serait il possible de compléter la fiche avec une description de l'implémentation de valeur par défaut dans les préfiltres.
- Ajouter dans la requête de sélection de la vue :
AND
`{PreFilter}`
1=1
- Ajouter les préfiltres dans la partie Filtres de la vue ex :
<Text field="D.reference" label="Ref :" />
<Text field="D.title" label="Titre :" OperatorDefaultValue="%" />
<Date field="FRM.DateApp" label="Date App :" />
- Compléter la partie code avec les éléments suivants : Code post requête SQL (Onload) :
if (!IsPostBack && string.IsNullOrEmpty(PreFilter1.FieldValue))
PreFilter1.FieldValue = "ENR-0001";
Code étendu :
public IPreFilterField PreFilter1
{
get
{
var field = GetPrefilterFields(Page).FirstOrDefault(o => (o as Control).ID == "PreFilter1");
if (field != null && string.IsNullOrEmpty(field.FieldOperator)) field.FieldOperator="[";
// field.FieldOperator="["; un opérateur par défaut est obligatoire
// "[" étant l'opérateur "Commence par.."
return field;
}
}