I used a DataFormWebPart to generate a custom edit form. Our client wanted to limit the maximum length of various fields on this form, but didn't want these to be applied site-wide.
The built-in SharePoint fields (FormField, TextField, NoteField, etc) don't have a "maxlength" property.
The solution was to modify the template for the various fields within the DataFormWebPart XSLT, to include RegularExpressionValidators.
Credit to Bart McDonough for this. His
blog post relates to creating a new field type, but I tried it within the DataFormWebPart and it worked.
The nice thing about this is that the validation will take place on both the client and the server
Here is a sample from my DataFormWebPart XSLT file. This sets the maximum length of a text field to 80 characters.
Note that the curly braces in the regular expression have to be escaped. If you don't do this, the XSLT will break.
<SharePoint:TextField runat="server" id="ff1{$Pos}" ControlMode="Edit" FieldName="Title" __designer:bind="{ddwrt:DataBind('u',concat('ff1',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Title')}">
<Template>
<asp:TextBox id="TextField" runat="server"/>
<asp:RegularExpressionValidator
ControlToValidate="TextField"
ValidationExpression=".{{0,80}}"
Text="Value cannot exceed 80 characters."
runat="server" />
</Template>
</SharePoint:TextField>