2016-09-02 6 views
0

Я создал настраиваемое поле в SharePoint 2013.SharePoint 2013 подгоняет настраиваемое поле фильтра

<FieldTypes> 
    <FieldType> 
    <Field Name="TypeName">CrossSiteLookupField</Field> 
    <Field Name="ParentType">Text</Field> 
    <Field Name="TypeDisplayName">Cross-Site Lookup Field</Field> 
    <Field Name="TypeShortDescription"> Cross-Site Lookup Field </Field> 
    <Field Name="UserCreatable">TRUE</Field> 
    <Field Name="ShowOnColumnTemplateCreate">TRUE</Field> 
    <Field Name="ShowOnListCreate">TRUE</Field> 
    <Field Name="ShowOnDocumentLibraryCreate">TRUE</Field> 
    <Field Name="ShowOnSurveyCreate">FALSE</Field> 
    <Field Name="ShowInFileDlg">FALSE</Field> 
    <Field Name="Sortable">TRUE</Field> 
    <Field Name="Filterable">TRUE</Field> 
    <Field Name="AllowBaseTypeRendering">FALSE</Field> 
    <Field Name="CAMLRendering">TRUE</Field> 
    <Field Name="AllowGridEditing">FALSE</Field> 

    <Field Name="FieldTypeClass">CrossSiteLookupField.CrossSiteLookupField,$SharePoint.Project.AssemblyFullName$</Field> 
    <Field Name="FieldEditorUserControl">/_controltemplates/15/CrossSiteLookupFieldAdminTemplate.ascx</Field> 

    </FieldType> 
</FieldTypes> 

Мой класс CrossSiteLookupField наследует от SPFieldText. Метод 'public override string GetValidatedString (значение объекта)' возвращает, например. '4; #Test' (например, SPFieldLookup). Теперь фильтр показывает «4; #Test», но я бы хотел, чтобы отображался только «Test». Второй вопрос: если у меня есть многозначное разделение с '; ', Я хотел бы иметь две строки фильтра.

Функциональность должна быть равна Lookup и LookupMulti.

Как это сделать?

Thx

ответ

0

У меня была та же проблема. Вы можете изменить страницу Filter.aspx в C: \ Program Files \ Common Files \ microsoft shared \ Расширения веб-сервера \ 15 \ TEMPLATE \ LAYOUTS. Эта страница создает возможность выбора фильтра. Добавление javascript вы можете изменить эти параметры. С помощью этого кода:

<Script> 
$ (Document) .ready (function() 
{ 
var presentText; 
$ ("Select> options"). Each (function() { 
Originaltext var = $ (this) .text(); 
if (originalText.indexOf ("#")> = 0) { 
var TextElement = Originaltext; 
if (TextElement == presentText) {$ (this) .remove(); } 
else { 
var = newText originalText.substring (2 originalText.indexOf ("#", 2)); 
if (newText == "") newText = "Empty"; 
if (originalText.indexOf ("true")> = 0) newText + = "(Validated)"; 
else newText + = "(not valid)"; 
$ (This) .text (newText); 
} 
presentText = TextElement; 
} 
}); 
}); 
</ Script> 

Редактирование голоса фильтров: original option к: modified option