4

I have SharePoint Standard which does not come with InfoPath Forms Services.

I want to be able to create a simple expenses workflow which gathers info using a form.

I've heard though I have a standalone copy of infopath 2010 but because I dont have InfoPath Forms Services every user will require a copy of Infopath. Is this true ?

I have a copy of VS2010 and I can create a custom form either as aspx or webpart, and advise appreciated.

Thanks

3 Answers 3

2

Your best bet would be to customize a new form using SPD and do your calculations using JQUERY or JAVASCRIPT you can also make calculated columns that could perform the calculations that you request. This is what I did.

  1. Open SPD
  2. Open the list your are referring to.
  3. On the forms tab click new form
  4. open the form and then click the advance tab.
  5. you can modify the PlaceHolderMain contentHolder
  6. Below is an example of one of my custom forms using jquery tabs.

        <xsl:template name="dvt_1.rowedit">
    <xsl:param name="Pos" select="position()"/>
    <tr>
        <td>
        <div id="hometab">
        <h3><a href="#"><span>Required Information</span></a></h3>
            <div id="RequiredInformation">
        <table>
        <tr>
        <td style="text-align:justify;">
        <img src="../../StyleLibrary/MuellerBranding/MLI_FORM_Logo.bmp" width="120px" height="120px" alt="#"/>
        </td>
        <td>
        <div style="margin:5px; text-align:justify; font-size:x-small;">
        <p>Mueller Industries, Inc.</p>
        <p>8285 Tournament Drive</p>
        <p>Suite 150</p>
        <p>Memphis, TN 38125</p>
        <p>Help Desk: 800.549.1678</p>
        <p><a style="color:blue;" href="mailto:z.IS User Support@muellerindustries.com">Email Support</a></p>
        </div>
        </td>
        </tr>
                                                            <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>User Name<span class="ms-formvalidation"> *</span>
                            </nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff3{$Pos}" ControlMode="New" FieldName="User_x0020_Name" __designer:bind="{ddwrt:DataBind('i',concat('ff3',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@User_x0020_Name')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff3description{$Pos}" FieldName="User_x0020_Name" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Job Title<span class="ms-formvalidation"> *</span>
                            </nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff4{$Pos}" ControlMode="New" FieldName="Job_x0020_Title" __designer:bind="{ddwrt:DataBind('i',concat('ff4',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Job_x0020_Title')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff4description{$Pos}" FieldName="Job_x0020_Title" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Location<span class="ms-formvalidation"> *</span>
                            </nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff5{$Pos}" ControlMode="New" FieldName="Location" __designer:bind="{ddwrt:DataBind('i',concat('ff5',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Location')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff5description{$Pos}" FieldName="Location" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Division<span class="ms-formvalidation"> *</span>
                            </nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff6{$Pos}" ControlMode="New" FieldName="Division" __designer:bind="{ddwrt:DataBind('i',concat('ff6',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Division')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff6description{$Pos}" FieldName="Division" ControlMode="New"/>
                    </td>
                </tr>
    
        </table>
        </div>
        <h3><a href="#"><span>Manager's Approval</span></a></h3>
        <div id="ManagersApproval">
        <table>
        <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Approved By Manager</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff7{$Pos}" ControlMode="New" FieldName="Approved_x0020_By_x0020_Manager" __designer:bind="{ddwrt:DataBind('i',concat('ff7',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Approved_x0020_By_x0020_Manager')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff7description{$Pos}" FieldName="Approved_x0020_By_x0020_Manager" ControlMode="New"/>
                    </td>
                </tr>
    
        </table>
    
        </div>
    
        <h3><a href="#"><span>IS Approval</span></a></h3>
        <div id="ISApproval">
        <table>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Approved By IS</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff9{$Pos}" ControlMode="New" FieldName="Approved_x0020_By_x0020_IS" __designer:bind="{ddwrt:DataBind('i',concat('ff9',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Approved_x0020_By_x0020_IS')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff9description{$Pos}" FieldName="Approved_x0020_By_x0020_IS" ControlMode="New"/>
                    </td>
                </tr>
        </table>
        </div>
    
        <h3><a href="#"><span>Reason For Request</span></a></h3>
        <div id="ReasonForRequest">
            <table>
        <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Reason For Request<span class="ms-formvalidation"> *</span>
                            </nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff11{$Pos}" ControlMode="New" FieldName="Reason_x0020_For_x0020_Request" __designer:bind="{ddwrt:DataBind('i',concat('ff11',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Reason_x0020_For_x0020_Request')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff11description{$Pos}" FieldName="Reason_x0020_For_x0020_Request" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Existing User's Serial Number<span class="ms-formvalidation"> *</span>
                            </nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff12{$Pos}" ControlMode="New" FieldName="Existing_x0020_User_x0027_s_x002" __designer:bind="{ddwrt:DataBind('i',concat('ff12',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Existing_x0020_User_x0027_s_x002')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff12description{$Pos}" FieldName="Existing_x0020_User_x0027_s_x002" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>MLI Asset Tag #<span class="ms-formvalidation"> *</span>
                            </nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff13{$Pos}" ControlMode="New" FieldName="MLI_x0020_Asset_x0020_Tag_x0020_" __designer:bind="{ddwrt:DataBind('i',concat('ff13',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@MLI_x0020_Asset_x0020_Tag_x0020_')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff13description{$Pos}" FieldName="MLI_x0020_Asset_x0020_Tag_x0020_" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Current User's Name</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff14{$Pos}" ControlMode="New" FieldName="Current_x0020_User_x0027_s_x0020" __designer:bind="{ddwrt:DataBind('i',concat('ff14',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Current_x0020_User_x0027_s_x0020')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff14description{$Pos}" FieldName="Current_x0020_User_x0027_s_x0020" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Will Existing unit be re-deployed?</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff15{$Pos}" ControlMode="New" FieldName="Will_x0020_Existing_x0020_unit_x" __designer:bind="{ddwrt:DataBind('i',concat('ff15',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Will_x0020_Existing_x0020_unit_x')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff15description{$Pos}" FieldName="Will_x0020_Existing_x0020_unit_x" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>If Yes Re-Deploy to</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff16{$Pos}" ControlMode="New" FieldName="If_x0020_Yes_x0020_Re_x002d_Depl" __designer:bind="{ddwrt:DataBind('i',concat('ff16',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@If_x0020_Yes_x0020_Re_x002d_Depl')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff16description{$Pos}" FieldName="If_x0020_Yes_x0020_Re_x002d_Depl" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>New User's Name</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff17{$Pos}" ControlMode="New" FieldName="New_x0020_User_x0027_s_x0020_Nam" __designer:bind="{ddwrt:DataBind('i',concat('ff17',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@New_x0020_User_x0027_s_x0020_Nam')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff17description{$Pos}" FieldName="New_x0020_User_x0027_s_x0020_Nam" ControlMode="New"/>
                    </td>
                </tr>
        </table>
    
        </div>
    
        <h3><a href="#"><span>Hardware Request</span></a></h3>
        <div id="HardwareRequest">
            <table>
        <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Hardware Request<span class="ms-formvalidation"> *</span>
                            </nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff18{$Pos}" ControlMode="New" FieldName="Hardware_x0020_Request" __designer:bind="{ddwrt:DataBind('i',concat('ff18',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Hardware_x0020_Request')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff18description{$Pos}" FieldName="Hardware_x0020_Request" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Printer Type</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff19{$Pos}" ControlMode="New" FieldName="Printer_x0020_Type" __designer:bind="{ddwrt:DataBind('i',concat('ff19',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Printer_x0020_Type')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff19description{$Pos}" FieldName="Printer_x0020_Type" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Keyboard Type</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff20{$Pos}" ControlMode="New" FieldName="Keyboard_x0020_Type" __designer:bind="{ddwrt:DataBind('i',concat('ff20',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Keyboard_x0020_Type')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff20description{$Pos}" FieldName="Keyboard_x0020_Type" ControlMode="New"/>
                    </td>
                </tr>
        </table>
    
        </div>
    
        <h3><a href="#"><span>Software Request</span></a></h3>
        <div id="SoftwareRequest">
            <table>
        <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Software Request<span class="ms-formvalidation"> *</span>
                            </nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff21{$Pos}" ControlMode="New" FieldName="Software_x0020_Request" __designer:bind="{ddwrt:DataBind('i',concat('ff21',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Software_x0020_Request')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff21description{$Pos}" FieldName="Software_x0020_Request" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>If Other Selected Please Explain</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff22{$Pos}" ControlMode="New" FieldName="If_x0020_Other_x0020_Selected_x0" __designer:bind="{ddwrt:DataBind('i',concat('ff22',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@If_x0020_Other_x0020_Selected_x0')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff22description{$Pos}" FieldName="If_x0020_Other_x0020_Selected_x0" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Tiny Term Site 1</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff23{$Pos}" ControlMode="New" FieldName="Tiny_x0020_Term_x0020_Site_x0020" __designer:bind="{ddwrt:DataBind('i',concat('ff23',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Tiny_x0020_Term_x0020_Site_x0020')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff23description{$Pos}" FieldName="Tiny_x0020_Term_x0020_Site_x0020" ControlMode="New"/>
                    </td>
                </tr>
                <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Tiny Term Site 2</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff24{$Pos}" ControlMode="New" FieldName="Tiny_x0020_Term_x0020_Site_x00200" __designer:bind="{ddwrt:DataBind('i',concat('ff24',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Tiny_x0020_Term_x0020_Site_x00200')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff24description{$Pos}" FieldName="Tiny_x0020_Term_x0020_Site_x00200" ControlMode="New"/>
                    </td>
                </tr>
        </table>
    
        </div>
    
        <h3><a href="#"><span>Explanation</span></a></h3>
        <div id="Explanation">
            <table >
        <tr>
                    <td  valign="top" class="ms-formlabel">
                        <H3 class="ms-standardheader">
                            <nobr>Explanation</nobr>
                        </H3>
                    </td>
                    <td  valign="top" class="ms-formbody">
                        <SharePoint:FormField runat="server" id="ff25{$Pos}" ControlMode="New" FieldName="Explanation" __designer:bind="{ddwrt:DataBind('i',concat('ff25',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Explanation')}"/>
                        <SharePoint:FieldDescription runat="server" id="ff25description{$Pos}" FieldName="Explanation" ControlMode="New"/>
                    </td>
                </tr>
                <tr id="idAttachmentsRow">
                    <td nowrap="true" valign="top" class="ms-formlabel" width="20%">
                        <SharePoint:FieldLabel ControlMode="New" FieldName="Attachments" runat="server"/>
                    </td>
                    <td valign="top" class="ms-formbody" width="80%">
                        <SharePoint:FormField runat="server" id="AttachmentsField" ControlMode="New" FieldName="Attachments" __designer:bind="{ddwrt:DataBind('i','AttachmentsField','Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Attachments')}"/>
                        <script>
      var elm = document.getElementById(&quot;idAttachmentsTable&quot;);
      if (elm == null || elm.rows.length == 0)
      document.getElementById(&quot;idAttachmentsRow&quot;).style.display=&apos;none&apos;;
    </script>
                    </td>
                </tr>
                <xsl:if test="$dvt_1_automode = '1'" ddwrt:cf_ignore="1">
                    <tr>
                        <td colspan="99" class="ms-vb">
                            <span ddwrt:amkeyfield="ID" ddwrt:amkeyvalue="ddwrt:EscapeDelims(string(@ID))" ddwrt:ammode="view"></span>
                        </td>
                    </tr>
                </xsl:if>
        </table>
    
        </div>
        </div>
            </td>
    </tr>
    

1
  • Can we customize the workflow initiation form in same way? The one with URL like "xxxx/_layouts/15/IniWrkflIP.aspx?xxxx"
    – Mark L
    Dec 3, 2015 at 6:07
1

If you create the forms using InfoPath without having Forms Services, then every user needs InfoPath.

The msdn article: Walkthrough: Creating a Workflow with Association and Initiation Forms walks though how to create a simple expense report workflow using aspx forms

1
  • Thanks for your help here. I have previously created custom forms in VS and its a lot of work. In the absence of Infopath is there any tool to make like easier, afterall its only an expense form, ideally the form needs a add /subtract item for expense items ? Any views on Nintex ? Jul 31, 2012 at 13:58
0

NOTE: This article is provided by the Global Product Team that officially maintains the updated Out-of-the-Box Capabilities for "Classic Experience" SharePoint.

Custom Forms can now be created on any "Classic Experience" SharePoint site (on-premises or in the cloud) if your SharePoint site has the new Out-of-the-Box Capabilities for SharePoint installed within Site Assets. All recent versions of SharePoint including: SharePoint Online (Office 365), SharePoint Server 2019, SharePoint Server 2016, SharePoint Server 2013, and SharePoint Foundation 2013 support Out-of-the-Box Custom Forms.

There are two primary types of Custom Forms that you can now create Out-of-the-Box without code on any "Classic Experience" SharePoint site:

  • Custom Forms without a Template
  • Custom Forms with a Template (replaces some InfoPath functionality)

Below I have included screen captures of both types of Custom Forms.

The first screen capture below is a Custom Form without a Template. As you can see it's quit complex and features a custom header, tabs, and cascading lists: Above is a Custom Form without a Template showing a custom header, tabs, and cascading lists

The second screen capture below is a Custom Form with a Template. These types of Custom Forms can be used to replace InfoPath functionality. The Template was created in Microsoft Word and saved within SharePoint. The Custom Form features cascading lists, linked columns based on changes to the cascading list, and also the cascading list is shown in a configuration that supports millions of records:

Above is a Custom Form with a Template showing a completely templatized form. The template was created in Microsoft Word. The form features a cascading lists, linked columns based on changes to the cascading list, and also the cascading list is shown in a configuration that supports millions of records.

Where you can learn more:

Ask your local SharePoint Support Provider for more information about new Out-of-the-Box Capabilities for SharePoint.

NOTE: Although the updated Out-of-the-Box Capabilities for SharePoint is tightly integrated for all recent versions of SharePoint, Microsoft is not the vendor for this addition to Classic SharePoint. The code library is globally maintained at: https://www.enterpriseproductivityservices.com/

2
  • When linking to your own site or content (or content that you are affiliated with), you must disclose your affiliation in the answer in order for it not to be considered spam. Having the same text in your username as the URL or mentioning it in your profile is not considered sufficient disclosure under Stack Exchange policy.
    – cigien
    Jul 30, 2021 at 23:55
  • Thanks for the helpful information, compliance is important. Items edited accordingly. Jul 31, 2021 at 1:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.