Я создал собственный тип поля, я думаю, что ошибок нет, потому что это так просто, но поле формы не отображается в форме (см. Рис.)
.ascx file:
<SharePoint:RenderingTemplate ID="MyField" runat="server">
<Template>
<asp:TextBox ID="TextField" MaxLength="255" runat="server" BackColor="Pink"
Font-Bold="true" BorderStyle="Dotted" BorderColor="DarkBlue" TextMode="MultiLine" />
</Template>
</SharePoint:RenderingTemplate>
Тип поля файла:
namespace MyCustomField.CustomField
{
class SPFieldMyCustomField : SPFieldMultiLineText
{
public SPFieldMyCustomField(SPFieldCollection fields, string fieldName) : base(fields, fieldName)
{
}
public SPFieldMyCustomField(SPFieldCollection fields, string typeName, string displayName)
: base(fields, typeName, displayName)
{
}
public override BaseFieldControl FieldRenderingControl
{
get
{
BaseFieldControl control = new MyCustomFieldControl();
control.FieldName = base.InternalName;
control.ControlMode = SPControlMode.Display;
return control;
}
}
}
}
и контрольный файл:
namespace MyCustomField.CustomField
{
internal class MyCustomFieldControl : RichTextField
{
protected override void CreateChildControls()
{
ControlMode = SPControlMode.Display;
base.CreateChildControls();
}
protected override void RenderFieldForDisplay(HtmlTextWriter output)
{
var html = String.IsNullOrEmpty(Item[Field.InternalName] as string) ? "" : Item[Field.InternalName] as string;
RenderHtmlForDisplay(output, html);
}
protected override string DefaultTemplateName
{
get
{
return "MyField";
}
}
}
}
Как видите, TextBox не отображается.