Web Forms for Marketers 2.3 for Sitecore CMS 6.5-6.6 Reference Guide 
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of 
this document are the property of Sitecore. Copyright © 2001-2014 Sitecore. All rights reserved.  
Page 61 of 84 
///The result of the control that will be used in the save actions and verification 
actions later 
/// <summary> 
/// Gets the result of clients' inputs. 
/// </summary> 
/// <value></value> 
public override ControlResult Result 
get 
return new ControlResult(this.ControlName, this.input.Text, null); 
///Creating the structure of the field 
/// <summary> 
/// Builds the control structure 
/// </summary> 
/// <param name="e">An <see cref="T:System.EventArgs"/> object that contains the 
event data.</param> 
protected override void OnInit(EventArgs e) 
this.input.CssClass = "scfDatePickerTextBox"; 
this.helpNotes.CssClass = "scfDatePickerUsefulInfo"; 
this.container.CssClass = "scfDatePickerGeneralPanel"; 
this.title.CssClass = "scfDatePickerLabel"; 
this.input.TextMode = TextBoxMode.SingleLine; 
this.Controls.AddAt(0, this.container); 
this.Controls.AddAt(0, this.title); 
this.container.Controls.AddAt(0, this.helpNotes); 
this.container.Controls.AddAt(0, this.input); 
/// <summary> 
/// Attaches jscripts to the page  
/// </summary> 
/// <param name="e">The e.</param> 
protected override void OnPreRender(EventArgs e) 
string script = "$(document).ready(function() { $('#" + this.input.ClientID + 
"').datepicker()"; 
this.Page.ClientScript.RegisterClientScriptInclude("jquery", "/sitecore 
modules/web/web forms for marketers/scripts/jquery.js"); 
this.Page.ClientScript.RegisterClientScriptInclude("jquery.ui", "/sitecore 
modules/web/web forms for marketers/scripts/jquery-ui.min.js"); 
this.Page.ClientScript.RegisterStartupScript(this.GetType(), script, script, true); 
base.OnPreRender(e); 
4.  Build the project and put the compiled 
Custom DatePicker.dll
file in the 
\website\bin\
folder.  
5.  In the Content Editor, in the
/sitecore/system/Modules/Web Forms for 
Marketers/Settings/Field Types/Custom 
folder, add a new Custom DatePicker item 
using 
/sitecore/templates/Web Forms for Marketers/Field Type
template. 
6.  In the Custom DatePicker item, in the Assembly field, enter Custom DatePicker and in the 
Class field enter DatePicker
Pdf fillable form - C# PDF Form Data fill-in Library: auto fill-in PDF form data in C#.net, ASP.NET, MVC, WinForms, WPF
Online C# Tutorial to Automatically Fill in Field Data to PDF
create fillable form pdf online; adding signature to pdf form
Pdf fillable form - VB.NET PDF Form Data fill-in library: auto fill-in PDF form data in vb.net, ASP.NET, MVC, WinForms, WPF
VB.NET PDF Form Data fill-in library: auto fill-in PDF form data in vb.net, ASP.NET, MVC, WinForms, WPF
convert excel to fillable pdf form; convert excel spreadsheet to fillable pdf form
Web Forms for Marketers 2.3 for Sitecore CMS 6.5-6.6 Reference Guide 
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of 
this document are the property of Sitecore. Copyright © 2001-2014 Sitecore. All rights reserved.  
Page 62 of 84 
3.7.3  Creating a New Field Type Based on the UserControl Class - .ascx 
file 
To create a new field type based on the UserControl class (.ascx file): 
1.  In Visual Studio, create a new project and name it, for example, UserControlField. 
2.  Add a new reference to the 
Sitecore.Forms.Core
assembly. 
3.  Create a new class that inherits 
Sitecore.Form.Web.UI.Controls.ValidateUserControl
. To give a new field a title, 
inherit your class from the 
IHasTitle
interface: 
public class CreditCard : ValidateUserControl, IHasTitle 
…. 
4.  Create the UserControlField.ascx user control file in the \Website\sitecore modules\Web\Web 
Forms for Marketers\UI\UserControl folder. 
5.  Build the project and put the compiled Custom UserControlField.dll file in the \website\bin\ folder.  
6.  In the Content Editor, in the /sitecore/system/Modules/Web Forms for Marketers/Settings/Field 
Types/Custom folder, create a new Custom UserControlField item based on the 
/sitecore/templates/Web Forms for Marketers/Field Type template. 
7.  In the Custom UserControlField item, in the User Control field, enter the path to the 
corresponding ascx file: /sitecore modules/web/Web Forms for Marketers/UI/UserControl/ 
UserControlField.ascx
C# PDF Field Edit Library: insert, delete, update pdf form field
A professional PDF form creator supports to create fillable PDF form in C#.NET. An advanced PDF form maker allows users to create editable PDF form in C#.NET.
create fillable forms in pdf; create a fillable pdf form in word
VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to
Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. Convert multiple pages PowerPoint to fillable and editable PDF documents.
change font size pdf fillable form; change font in pdf fillable form
Web Forms for Marketers 2.3 for Sitecore CMS 6.5-6.6 Reference Guide 
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of 
this document are the property of Sitecore. Copyright © 2001-2014 Sitecore. All rights reserved.  
Page 63 of 84 
3.8 
Creating a Save Action 
You can create a custom save action. Use the base interface and classes when you are creating a new 
class. 
3.8.1  Base Interface and Classes 
To create a custom save action, you must create a class that inherits the 
Sitecore.Form.Submit.ISaveAction
interface. This interface contains the Execute method that 
must be implemented in your new class, because it is called by all save actions assigned to a web form. 
Use this method to implement a save action logic.  
The Execute method accepts three arguments: 
ID formid  
id of the web form item that the action is assigned to. 
AdaptedResultList fields 
a list of the AdaptedResult classes. Each item in the list provides 
information about a web form field that is submitted (Value, FieldIDFieldName, Parameters). 
params object[] data 
the first element of the array that contains the analytics session ID. 
The Web Forms for Marketers module provides several classes that you can inherit a custom class from: 
Sitecore.Form.Submit.UserBaseAction
class 
Sitecore.Form.Core.Submit.AuditSaveAction
class 
Sitecore.Form.Submit.UserBaseAction class 
The 
Sitecore.Form.Submit.UserBaseAction
class lets you 
manipulating users’ accounts.
The 
Sitecore.Form.Submit.UserBaseAction
class contains the following methods: 
Method 
Description 
public static string Escape(string 
userName)
Formats a username (r
eplaces “.” with “_dot_” and 
“@” with “_at_”)
public static string 
GetFullUserName(string domainName, 
string userName)  
Ensures that a username contains a domain name. 
protected string 
GetProfileProperty(UserProfile 
profile, string profileproperty) 
Gets a profile property value by its name. 
protected string 
GetUserNameIfExist(string 
preUserName) 
Returns a username if the user with the specified 
name exists, otherwise returns null. 
public static string 
GetValidUserName(string domainName, 
string userName) 
Returns a valid username based on the specified 
one. 
protected virtual string 
ProccessBaseOperations(ID formId, 
AdaptedResultList fields, bool 
createIfNotExist) 
Returns a username if the user exists or was 
created (depending on the 
bool 
createIfNotExist
argument value) by the 
method. 
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. Convert multiple pages Word to fillable and editable PDF documents.
convert pdf fill form; create fill in pdf forms
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. Create fillable and editable PDF documents from Excel in Visual
convert pdf fillable form; convert word form to pdf fillable form
Web Forms for Marketers 2.3 for Sitecore CMS 6.5-6.6 Reference Guide 
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of 
this document are the property of Sitecore. Copyright © 2001-2014 Sitecore. All rights reserved.  
Page 64 of 84 
Method 
Description 
protected virtual void 
UpdateEmail(string userName, string 
mail) 
Sets the user mail if specified e-mail is valid. 
protected virtual void 
UpdateGlobalSession(string userName)  
Updates the analytics global session with the 
specified user. 
protected virtual void 
UpdatePassword(ID formID, string 
userName, string password)  
Creates a user with the specified name and 
password if none exists. If the Password property 
value is blankPassword the user will be created 
with blank password, if value is randomPassword a 
random password will be generated. This method 
also sets the profile item id for the created user. 
protected void 
UpdateProfileProperty(UserProfile 
profile, string profileproperty, 
string propertyValue)
Sets the profile property value. 
The 
Sitecore.Form.Submit.UserBaseAction
class contains the following properties: 
Property 
Description 
public bool AssociateUserWithVisitor { 
get; set; } 
Indicates whether the analytics global session must 
be updated with the user information. This property 
is checked in the 
UpdateGlobalSession
method. 
public string AuditField { get; set; } 
It is only used in derived types. 
public string DomainField { get; set; 
Specifies the domain name. 
public string PasswordField { get; 
set; } 
Specifies if the password field name can contain 
special values. 
public string ProfileItemId { get; 
set; } 
Sets or gets ID of the user profile item. 
public string UserNameField { get; 
set; } 
Sets or gets the name of the web form field that 
contains a username. 
public string UserNameIsEmpty { get; 
set; } 
Sets or gets the exception message that is thrown 
if a username is empty. 
Sitecore.Form.Core.Submit.AuditSaveAction class 
The 
Sitecore.Form.Core.Submit.AuditSaveAction
class lets you collect audit messages when a 
save action is executed. It is the base class for the 
UserBaseAction
class. 
The 
Sitecore.Form.Core.Submit.AuditSaveAction
class contains the following methods: 
Method 
Description 
public void AuditMessage(string 
message) 
Adds a message to the messages collection (class 
member). 
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Convert multiple pages PowerPoint to fillable and editable PDF documents. Easy to create searchable and scanned PDF files from PowerPoint.
convert an existing form into a fillable pdf; create a fillable pdf form
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
Create fillable and editable PDF documents from Excel in both .NET WinForms and ASP.NET. Create searchable and scanned PDF files from Excel.
create a pdf form to fill out; pdf create fillable form
Web Forms for Marketers 2.3 for Sitecore CMS 6.5-6.6 Reference Guide 
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of 
this document are the property of Sitecore. Copyright © 2001-2014 Sitecore. All rights reserved.  
Page 65 of 84 
Method 
Description 
public void AuditSkippedField(string 
takenFrom, string insertTo, string 
value) 
Adds an entry to the skipped collection (class 
member). This method can be used to track profile 
fields that were not overwritten. 
3.8.2  Parameters 
A save action can have any number of parameters. In the save action class, parameters are represented 
as class properties of the string type: 
public string MyProperty{ get;set;} 
You can specify parameter values in the save action item, in the Parameters field or in the Localized 
parameters field in the following format: 
<parameter name>value</parameter name> 
Specific web form parameters are stored in the web form item and you can edit them in the Form 
Designer, in the Action Editor. For more information about the Action Editor, see the How to Create an 
Action Editor section. 
The parameters in the save action item override the parameters specified in the web form item. 
3.8.3  How to Create a Save Action 
To create a save action, for instance, a login action: 
1.  Create a new project, for example 
Sitecore.Forms.Sample
2.  Add a new reference to the 
Sitecore.Forms.Core
assembly. 
3.  Create a new class that inherits the 
Sitecore.Form.Submit.ISaveAction
interface. 
Action Code: 
using Sitecore.Data; 
using Sitecore.Diagnostics; 
using Sitecore.Form.Core.Client.Data.Submit; 
using Sitecore.Form.Core.Controls.Data; 
using Sitecore.Form.Submit; 
using Sitecore.Security.Authentication; 
namespace Sitecore.Forms.Sample 
/// <summary> 
/// Login action  
/// </summary> 
public class LoginAction : ISaveAction 
#region Methods 
/// <summary> 
/// Initializes a new instance of the <see cref="LoginAction"/> class. 
/// </summary> 
public LoginAction() 
this.DefaultDomain = "sitecore"; 
/// <summary> 
/// Executes the login action. 
/// </summary> 
/// <param name="formid">The form id.</param> 
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Convert multiple pages Word to fillable and editable PDF documents in both .NET WinForms and ASP.NET. Convert both DOC and DOCX formats to PDF files.
create a writable pdf form; create fill pdf form
C# Create PDF Library SDK to convert PDF from other file formats
Create fillable PDF document with fields. Load PDF from existing documents and image in SQL server. Load PDF from stream programmatically.
create a pdf form that can be filled out; .net fill pdf form
Web Forms for Marketers 2.3 for Sitecore CMS 6.5-6.6 Reference Guide 
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of 
this document are the property of Sitecore. Copyright © 2001-2014 Sitecore. All rights reserved.  
Page 66 of 84 
/// <param name="fields">The fields of the form.</param> 
/// <param name="data">The custom data.</param> 
public void Execute(ID formid, AdaptedResultList fields, params object[] data) 
AdaptedControlResult login = fields.GetEntry(this.Login, "Login"); 
AdaptedControlResult password = fields.GetEntry(this.Password, "Password"); 
Assert.ArgumentNotNull(login, "You should point the login field."); 
Assert.ArgumentNotNull(password, "You should point the password field."); 
string userName = login.Value; 
Assert.ArgumentNotNullOrEmpty(userName, "Login can't be empty"); 
if (!userName.Contains("\\")) 
userName = string.Join("\\", new[] { this.DefaultDomain, userName }); 
AuthenticationManager.Login(userName, password.Value, true); 
#endregion 
#region Properties 
/// <summary> 
/// Gets or sets the default domain. 
/// </summary> 
/// <value>The default domain.</value> 
public string DefaultDomain { get; set; } 
/// <summary> 
/// Gets or sets the login field. 
/// </summary> 
public string Login { get; set; } 
/// <summary> 
/// Gets or sets the password field. 
/// </summary> 
public string Password { get; set; } 
#endregion 
C# Create PDF from OpenOffice to convert odt, odp files to PDF in
An advanced .NET control to change ODT, ODS, ODP forms to fillable PDF formats in Visual C# .NET. Online source code for C#.NET class.
convert pdf file to fillable form; add fillable fields to pdf
VB.NET Create PDF from OpenOffice to convert odt, odp files to PDF
Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. Turn ODT, ODS, ODP forms into fillable PDF formats.
attach image to pdf form; convert pdf fillable forms
Web Forms for Marketers 2.3 for Sitecore CMS 6.5-6.6 Reference Guide 
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of 
this document are the property of Sitecore. Copyright © 2001-2014 Sitecore. All rights reserved.  
Page 67 of 84 
4.  In the Content Editor, create a new item under 
/sitecore/System/Modules/Web Forms 
for Marketers/Settings/Actions/Save Actions
and specify its parameters: 
For more information about save action parameters, see the section Save Actions
Web Forms for Marketers 2.3 for Sitecore CMS 6.5-6.6 Reference Guide 
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of 
this document are the property of Sitecore. Copyright © 2001-2014 Sitecore. All rights reserved.  
Page 68 of 84 
3.9 
How to Create an Action Editor 
Action Editor is a dialog box that lets the user set some parameters of a save action. You can create an 
Action Editor for your custom save action. 
Before creating an Action Editor, refer to the following articles for more information about xml controls: 
http://sdn.sitecore.net/Articles/XML%20Sheer%20UI/Beginning%20with%20XML%20controls.asp
http://sdn.sitecore.net/SDN5/Articles/XML%20Sheer%20UI/My%20first%20XML%20application.a
spx 
The working logic of the Action Editor is the following: 
Read save action parameters in the 
OnLoad
method. 
Show save action parameters to the user. 
After the user edited the parameters, save them to the Save Actions field of the web form using 
the 
OnOk
method.  
Analyze the following code tips before implementing an Action Editor: 
To get current save action parameters:  
string params=HttpContext.Current.Session[Sitecore.Web.WebUtil.GetQueryString("params")] 
as string; 
NameValueCollection nvParams=ParametersUtil.XmlToNameValueCollection(params); 
To save parameter values, override the 
OnOk
method: 
protected override void OnOK(object sender, EventArgs args) 
      
string str3 = ParametersUtil.NameValueCollectionToXml(this.nvParams ?? new 
NameValueCollection()); 
if (str3.Length == 0) 
str3 = "-"; 
SheerResponse.SetDialogValue(str3); 
base.OnOK(sender, args); 
To get the current web form item ID: 
Sitecore.Web.WebUtil.GetQueryString("id"); 
To get the current language: 
Sitecore.Web.WebUtil.GetQueryString("la", "en"); 
To get the current Sitecore database: 
Sitecore.Web.WebUtil.GetQueryString("db"); 
Perform the following actions to create an action editor: 
1.  Create a 
*xml
file that contains the dialog layout: 
<?xml version="1.0" encoding="utf-8" ?> 
<control xmlns:def="Definition" xmlns="http://schemas.sitecore.net/Visual-Studio-
Intellisense"> 
<SimpleEditor> 
<Stylesheet> 
.scfContent { 
Web Forms for Marketers 2.3 for Sitecore CMS 6.5-6.6 Reference Guide 
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of 
this document are the property of Sitecore. Copyright © 2001-2014 Sitecore. All rights reserved.  
Page 69 of 84 
padding-top : 15px; 
.scfFieldScope{  
width:100%; margin:7px;  
.scfFieldLabel {  
width:40%;  
 
.scfFieldSelect {  
width:58%; 
position:absolute; 
right:0; 
margin-right:20px;  
</Stylesheet> 
<FormDialog ID="Dialog" Icon="Software/32x32/step_new.png"> 
<CodeBeside Type="Sitecore.Forms.Sample.SimpleEditor,Sitecore.Forms.Sample"/> 
<Border Class="scfContent" Width="100%"  Align="left" Style="overflow:none;"> 
<Literal ID="name" Text="Login:" Class="scfFieldLabel"/> 
<Combobox runat="server" ID="login"/> 
</Border> 
<Border Class="scfContent" Width="100%"  Align="left" Style="overflow:none;"> 
<Literal ID="pass" Text="Password:" Class="scfFieldLabel"/> 
<Combobox runat="server" ID="password"/> 
</Border> 
<Border Class="scfContent" Width="100%"  Align="left" Style="overflow:none;"> 
<Literal ID="domLiteral" Text="Default domain:" Class="scfFieldLabel"/> 
<Combobox runat="server" ID="domain"/>                       
</Border> 
</FormDialog> 
</SimpleEditor> 
</control> 
2.  Create an action editor class based on the 
Sitecore.Web.UI.Pages.DialogForm
one. 
Specify the created class as 
CodeBeside
in the 
*.xml
file. Here is the action editor class 
sample code: 
public class SimpleEditor : DialogForm    
protected Combobox domain; 
protected Combobox login; 
protected Combobox password; 
private NameValueCollection nvParams; 
protected override void OnLoad(EventArgs e) 
base.OnLoad(e); 
if (!Context.ClientPage.IsEvent) 
foreach (Domain d in DomainManager.GetDomains()) 
Sitecore.Web.UI.HtmlControls.ListItem item = new 
Web.UI.HtmlControls.ListItem();           
item.Value = d.Name; 
item.Header = d.Name; 
domain.Controls.Add(item); 
foreach (FieldItem f in this.CurrentForm.Fields) 
Sitecore.Web.UI.HtmlControls.ListItem item = new 
Web.UI.HtmlControls.ListItem(); 
item.Value = f.ID.ToString(); 
item.Header = f.DisplayName; 
login.Controls.Add(item); 
item = new Web.UI.HtmlControls.ListItem(); 
Web Forms for Marketers 2.3 for Sitecore CMS 6.5-6.6 Reference Guide 
Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders. The contents of 
this document are the property of Sitecore. Copyright © 2001-2014 Sitecore. All rights reserved.  
Page 70 of 84 
item.Value = f.ID.ToString(); 
item.Header = f.DisplayName; 
password.Controls.Add(item); 
domain.Value = this.GetValueByKey("DefaultDomain") ?? string.Empty; 
login.Value = this.GetValueByKey("Login") ?? string.Empty; 
password.Value=this.GetValueByKey("Password") ??string.Empty; 
protected void SaveValues() 
this.SetValue("DefaultDomain", domain.Value); 
this.SetValue("Login", login.Value); 
this.SetValue("Password", password.Value); 
protected override void OnOK(object sender, EventArgs args) 
this.SaveValues(); 
string str3 = ParametersUtil.NameValueCollectionToXml(this.nvParams ?? new 
NameValueCollection()); 
if (str3.Length == 0) 
str3 = "-"; 
SheerResponse.SetDialogValue(str3); 
base.OnOK(sender, args); 
}  
public void SetValue(string key, string value) 
if (this.nvParams == null) 
this.nvParams = ParametersUtil.XmlToNameValueCollection(this.Params); 
this.nvParams[key] = value; 
public string GetValueByKey(string key) 
if (this.nvParams == null) 
this.nvParams = ParametersUtil.XmlToNameValueCollection(this.Params); 
return (this.nvParams[key] ?? string.Empty); 
  
public string Params 
get 
return 
(HttpContext.Current.Session[Sitecore.Web.WebUtil.GetQueryString("params")] as string); 
   
public string CurrentID 
get 
return Sitecore.Web.WebUtil.GetQueryString("id"); 
public FormItem CurrentForm 
get 
if (!string.IsNullOrEmpty(this.CurrentID)) 
Item innerItem = this.CurrentDatabase.GetItem(this.CurrentID, 
this.CurrentLanguage); 
Documents you may be interested
Documents you may be interested