\wfgen\wfapps\webforms
(p.ex. : \wfgen\wfapps\webforms\MonFormulaireWeb
).MonFormulaireWeb
associé en raison de ces modifications, vous devez au préalable dupliquer MonFormulaireWeb
, puis créer une autre application IIS. Sinon, les deux versions du processus utiliseront le même MonFormulaireWeb
modifié.\wfgen\wfapps\webforms\MonFormulaireWeb
.
Table1
. Suivez ces étapes afin d'ajouter un nouveau DataSet dans votre projet Web :DataTable1
en Table1
.
Default.aspx.cs
et instanciez-la dans le constructeur par défaut de votre classe. Si votre nom de classe est Form
, le code ressemblera à ceci pour l'instant :web.config
dans votre projet Web si vous utilisez C# comme langage de développement dans l'IDE de Microsoft Visual Studio. Pour afficher des messages d'erreur complets lorsque vous souhaitez déboguer, vous devez disposer d'un fichier web.config
. Pour ajouter un fichier web.config
par défaut à votre projet, procédez comme suit :web.config
:"true"
:mode
est définie sur "Off"
:WorkflowGen.My.dll
dans votre projet Web, puis ajouter cette instruction au début de votre formulaire Web :WorfklowGen.My.Web.UI.WebForms
.Page_Load
Page_Load
est d'appeler la méthode FillFormData()
pour remplir les données dans vos données de formulaire. La Page_Load
est également l'endroit où apporter des modifications aux propriétés de WorkflowPage. Vous pouvez donner un DataSet ou un XmlDocument à la méthode FillFormData()
.FillFormData()
dans l'événement Page_Load
remplacera les modifications avec les anciennes données.SaveFormData()
à partir de WorkflowPage. Vous pouvez attribuer un DataSet ou un XmlDocument à la méthode SaveFormData()
.Table1
de vos données de formulaire en appelant la méthode SaveFieldsData(DataSet)
. La méthode essaiera de trouver des contrôles dans la page qui ont les mêmes IDs que les colonnes Table1
, et lorsqu'elle en trouve un, elle met à jour la valeur de la donnée de formulaire avec la valeur du contrôle.Table1
.WorkflowPageSubmitToWorkflow()
. Cette méthode doit recevoir vos données de formulaire si vous souhaitez les enregistrer en même temps. Vous pouvez également séparer manuellement ces appels en appelant SubmitToWorkflow
sans aucun paramètre; cependant, si vous faites cela, les données de votre formulaire ne seront pas mises à jour si vous n'appelez pas explicitement SaveFormData(formData)
avant de soumettre.RequiredFieldValidator
dans votre page pour valider les champs qui ont été écrits dans le paramètre FORM_FIELDS_REQUIRED
dans toutes vos actions EFORMASPX. Ces validations peuvent être placées sur l'un des types de contrôle suivants :TextBox
RadioButtonList
DropDownList
ListBox
FileUpload
HtmlInputFile
RequiredFieldsErrorMessage
. Assurez-vous d'avoir le symbole {0}
dans votre message personnalisé. Si vous ne placez pas de balise {0}
quelque part dans votre message, une exception sera levée car il ne serait pas logique d'avoir une liste de champs obligatoires sans savoir quels champs doivent être remplis.RequiredFieldValidator
qui sont créés ont leurs propriétés ValidationGroup
définies sur WFGENPage
. Cela signifie que la validation de ces validateurs ne sera effectuée que si le contrôle qui déclenche la validation a sa propriété ValidationGroup
définie sur la même valeur. Par défaut, si vous avez un contrôle bouton SubmitButton
dans votre page, son ValidationGroup
est automatiquement modifié. Si vous utilisez un autre identifiant pour le bouton de soumission, vous devez définir vous-même le ValidationGroup
, sinon les champs obligatoires ne seront pas validés comme prévu lors de la soumission de la page.FieldDataType
, des validateurs sont automatiquement insérés dans votre page pour valider les types de données Date
et Numeric
.RangeValidator
avec la propriété MinimumValue
définie sur DateTime.MinimumValue
et la propriété MaximumValue
définie sur DateTime.MaximumValue
.
RangeValidator
avec la propriété MinimumValue
définie sur Double.MinimumValue
et la propriété MaximumValue
définie sur Double.MaximumValue
.RangeValidator
ont la convention d'affectation de noms suivante : WFGEN_RV_FIELD_ID
.RangeValidator
pour valider les champs sur lesquels vous avez défini l'attribut FieldDataType
, WorkflowPage ne crée pas automatiquement de RangeValidator
pour ces champs.RangeValidator
qui sont créés ont leurs propriétés ValidationGroup
définies sur WFGENPage
. Cela signifie que la validation de ces validateurs ne sera effectuée que si le contrôle qui déclenche la validation a sa propriété ValidationGroup
définie sur la même valeur. Par défaut, si vous avez un contrôle bouton SubmitButton
dans votre page, son ValidationGroup
est automatiquement modifié. Si vous utilisez un autre identifiant pour le bouton de soumission, vous devez définir vous-même le ValidationGroup
, sinon les champs ne seront pas validés comme prévu lors de la soumission de la page.RequiredFieldValidator
ou RangeValidator
sur les champs où vous avez spécifié l'attribut FieldDataType
, et WorkflowPage ne créera pas automatiquement des contrôles RequiredFieldValidator
ou RangeValidator
pour ces contrôles particuliers.CompareValidator
, CustomValidator
ou RegularExpressionValidator
), vous devrez modifier les propriétés ValidationGroup
de ces validateurs en WFGENPage
, sinon la validation ne sera pas effectuée pour les contrôles ciblés lors de la soumission du formulaire.FORM_FIELDS_READONLY
. Les types de contrôle suivants seront définis en lecture seule ou désactivés s'ils se trouvent dans FORM_FIELDS_READONLY
:TextBox
RadioButton
RadioButtonList
CheckBox
CheckBoxList
DropDownList
ListBox
FileUpload
HtmlInputFile
FORM_FIELDS_REQUIRED
et FORM_FIELDS_READONLY
en fonction de sa propriété FieldsColorization
.FieldsColorization
est une instance d'une énumération qui peut avoir les valeurs suivantes :Automatic
CSS
None
RequiredFieldsBorderColor
ReadOnlyFieldsBorderColor
ForeColor
) modifiée si la couleur n'est pas Color.Empty
dans leurs propriétés correspondantes :DropDownList
CheckBoxList
RadioButtonList
Color.Empty
dans leurs propriétés correspondantes.CssClass
des contrôles comme indiqué dans l'exemple ci-dessous, ce qui vous donne beaucoup plus de flexibilité pour avoir l'apparence exacte que vous souhaitez dans votre formulaire Web.TextBox1
a sa propriété CssClass
définie sur FieldValueCell
et qu'il s'agit d'un champ obligatoire, CssClass1
sera remplacé par FieldValueCell-required
.
TextBox1
n'a pas de propriété CssClass
, CssClass
sera remplacé par Required
.form_archive.css
.\css
et votre fichier de feuille de style d'archive de formulaire doit être appelé form_archive.css
, car WorkflowPage recherchera cet emplacement particulier et ce nom de fichier pour le trouver, puis remplacera les styles d'archive de formulaire par les styles contenus dans ce fichier.FormArchiveCssPath
, dont la valeur par défaut est \css\form_archive.css
. Si aucun fichier form_archive.css
n'est créé, l'archive de formulaire aura la même apparence que le formulaire Web, mais les champs seront tous définis en lecture seule ou désactivés.SubmitButton
sera automatiquement masqué dans l'archive de formulaire.FORM_FIELDS_ARCHIVE_HIDDEN
. Les contrôles répertoriés dans ce paramètre seront automatiquement masqués lors de la création de l'archive de formulaire.runat=server
dans votre formulaire Web ne seront pas masqués.ChangeFormArchiveLayout()
.GetFormArchive()
. Cette méthode doit renvoyer une chaîne contenant le HTML de l'archive de formulaire.FileUpload
dans votre formulaire Web, vous souhaiterez utiliser la méthode SaveFileAttachment()
dans WorkflowPage. Cette méthode est utilisée pour enregistrer le fichier dans le sous-répertoire \upload
dans le chemin de stockage EFORMASPX et récupérer le nom de fichier du fichier publié.SaveFileAttachment()
.en-US
).
culture-code.resx
.
📌 Exemple : Strings.fr-FR.resx
serait le nom de fichier de la langue française de France.System.Resources
, et toutes vos ressources seront automatiquement fortement typées. Cela signifie que vous pouvez accéder à tout le contenu de vos fichiers de ressources avec des propriétés d'objet.PEOPLE_LIST
:ObjectDataSource
ObjectDataSource
dans votre page et à le lier à votre objet métier. Pour ce faire :ObjectDataSource
sur votre formulaire Web en mode Création.
ObjectCreating
pour gérer la création de l'ObjectDataSource
avec la classe de l'objet métier.ObjectDataSource
que vous avez créé à l'étape précédente comme DataSource et vérifiez les opérations que vous souhaitez activer dans votre GridView. (Voir Activation de l'insertion dans le GridView ci-dessous pour des instructions sur comment activer l'insertion dans un GridView.)
DataKeyNames
si vous souhaitez activer la modification et l'insertion dans votre GridView.
ID
en lecture seule en cliquant sur Modifier les colonnes... et en définissant la propriété ReadOnly
du champ lié à l'ID sur True
.PEOPLE_LIST
lorsque quelqu'un clique dessus. Pour ce faire :LinkButton
sous votre GridView, puis double-cliquez sur le LinkButton
et ajoutez-y le code suivant:EditIndex
si vous souhaitez activer la pagination et le tri dans votre GridView. Cela est dû au fait que le EditIndex
n'est pas nécessairement le PEOPLE_LIST.Rows.Count - 1
lorsque vous utilisez ces fonctions.OnRowDeleted
et OnRowUpdated
OnRowDeleted
et OnRowUpdated
pour que GridView mette à jour vos données de formulaire à chaque modification. Pour ce faire, ajoutez le code suivant :FormData
et séparation des données de formulaire des paramètres de formulaireTable1
, mais vous pouvez toujours utiliser un autre nom de DataSet et un autre nom de DataTable si vous le souhaitez.Table1
pour le DataTable, vous devez utiliser le paramètre PARAMS_XPATH
dans toutes vos actions pour indiquer à EFORMASPX et WorkflowPage où ils doivent localiser les paramètres et les données du formulaire. Ce paramètre est un XPath qui pointe vers cette table. Si vous nommez votre DataSet MyFormData
et que vous nommez votre table par défaut MyParameters
, le paramètre PARAMS_XPATH
doit contenir MyFormData/MyParameters
, sinon votre processus ne fonctionnera pas.FORM_DATA
dans votre projet avec le même schéma vide :REQUEST_FIRSTNAME
dans votre formulaire Web et que vous souhaitez placer ces données dans une autre table (p.ex. MyData
), vous déclarez le paramètre avec le nom /MesDonnnéesFormulaire/MesDonnées/REQUEST_FIRSTNAME
.FORM_DATA
personnalisé dans votre processus qui contient des nœuds vides pour ces paramètres.Table1
du jeu de donnée FormData
, préfixé par l'ID du contrôle utilisateur dans la page.
Par exemple, si vous avez un UserControl dans votre page avec l'ID HEADER_UC
qui contient une zone de texte avec l'ID FIRST_NAME
, le champ sera accessible via FormData avec le nom HEADER_UC.FIRST_NAME
.
HEADER_UC.FIRST_NAME
, vous devrez utiliser ce nom comme nom de paramètre dans le paramètre d'action WorkflowGen.
FORM_FIELDS_REQUIRED
.