2016-09-02 6 views
0

J'ai créé un champ personnalisé dans SharePoint 2013.SharePoint 2013 customize filtre champ personnalisé

<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> 

Ma classe CrossSiteLookupField hérite de SPFieldText. La méthode 'public override string GetValidatedString (valeur de l'objet)' renvoie par exemple. '4; #Test' (comme un SPFieldLookup). Maintenant le filtre montre '4; #Test' mais je voudrais que le 'Test' soit affiché seulement. La deuxième question est: Si j'ai une multivaleur séparée par '; ', J'aimerais avoir deux rangées de filtres.

La fonctionnalité doit être égale à Lookup et LookupMulti.

Comment est-ce que je peux faire ceci?

Thx

Répondre

0

J'ai eu le même problème. Vous pouvez modifier la page Filter.aspx dans C: \ Program Files \ Fichiers communs \ microsoft shared \ Extensions serveur Web \ 15 \ TEMPLATE \ LAYOUTS. Cette page permet de sélectionner le filtre. En ajoutant le javascript, vous pouvez modifier ces options. Avec ce code:

<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> 

Modifier les voix des filtres: original option à: modified option