Я схожу с ума от нехватки парней MS и документации MSDN.
Может быть, эта справка сработала для моего пользовательского типа поля (пользовательское свойство с именем LinkType):
<xsl:template match="FieldRef[@FieldType = 'EnhancedTitleField']" mode="Text_body">
<xsl:param name="thisNode" select="."/>
<xsl:variable name="linkType" select="$thisNode/@LinkType" />
<xsl:choose>
<xsl:when test="$linkType=''">
empty
</xsl:when>
<xsl:otherwise>
link
</xsl:otherwise>
</xsl:choose>
</xsl:template >
...
Позже, после нескольких часов тестирования, может быть найдено решение. Когда я наследую свое поле от «SPFieldMultiLineText», owerride «GetFieldValueAsHtml» и изменяю определение поля, оно начинает работать.
Вот код ключа рабочей комбинации:
<Field Name="ParentType">Note</Field>
<Field Name="CAMLRendering">TRUE</Field>
<Field Name="AllowBaseTypeRendering">TRUE</Field>
<RenderPattern Name="DisplayPattern">
<Column Name="ID" /><HTML><![CDATA[;]]></HTML><Column Name="Title" /><HTML><![CDATA[;]]></HTML><PageUrl WebRel="FALSE" URLEncode="TRUE"/>
</RenderPattern>
В коде:
EnhancedTitleField : SPFieldMultiLineText
...
public override string GetFieldValueAsHtml(object value)
{
string[] splitedValue = value != null ? value.ToString().Split(';') : new string[0];
int id = splitedValue.Length > 0 ? int.Parse(splitedValue[0]) : 0;
string title = splitedValue.Length > 1 ? splitedValue[1] : "";
string source = splitedValue.Length > 2 ? splitedValue[2] : "";
string html = EnhancedTitleFieldControl.GetHtml(this, id, title, source);
return html;
}
Каким-то образом в SPFieldMultilinetext CAML сгенерированное значение передается этому методу. Таким образом, вы можете подготовить данные контекста из caml для обработки в этом методе, где у вас есть ДОСТУП к ТАМОЖЕННЫМ СВОЙСТВАМ!
Надеюсь, это поможет :), и ребята из MS, ЧТО-ТО ДЕЛАТЬ с документацией MSDN!