Domanda

Sto cercando di personalizzare il testo visualizzato nella casella di ricerca del mio sito di SharePoint.L'impostazione predefinita è "Cerca questo sito ...".

Ho trovato una serie di articoli che spiegano come farlo (sovrascrivendo il controllo delegato con un numero di sequenza inferiore) e funziona bene.

Il mio XML è simile a questo:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Control
        Id="SmallSearchInputBox"
        Sequence="10"
        ControlClass="Microsoft.SharePoint.Portal.WebControls.SearchBoxEx" ControlAssembly="Microsoft.Office.Server.Search, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">
        <Property Name="GoImageUrl">/_layouts/images/gosearch15.png</Property>
        <Property Name="GoImageUrlRTL">/_layouts/images/gosearchrtl15.png</Property>
        <Property Name="GoImageActiveUrl">/_layouts/images/gosearchhover15.png</Property>
        <Property Name="GoImageActiveUrlRTL">/_layouts/images/gosearchrtlhover15.png</Property>
        <Property Name="DropDownMode">ShowDD</Property>
        <Property Name="SearchResultPageURL">/_layouts/osssearchresults.aspx</Property>
        <Property Name="ScopeDisplayGroupName"></Property>
        <Property Name="FrameType">None</Property>
        <Property Name="QueryPromptString">DO A SEARCH!</Property>
    </Control>
</Elements>
.

funziona bene, la casella di ricerca visualizza "Fai una ricerca!"come previsto.Tuttavia, voglio questa stringa localizzata.Quando faccio

<Property Name="QueryPromptString">$Resources:MyResourceFile,CustomText;</Property>
.

La casella di ricerca visualizza $ risorse: myresourcefile, personalizzato;itteralmente invece di valutarlo.

Come posso mettere le stringhe localizzate lì?

Grazie!

È stato utile?

Soluzione

La linea <Property Name="QueryPromptString">$Resources:MyResourceFile,ResourceKey</Property> Wokrs Fine per me. Penso che dovresti controllare il tuo file delle risorse.Questo file dovrebbe contenere risorseKey che tenta di utilizzare in questa proprietà.

Se si utilizza il file e il tasto risorse corretti, il controllo di ricerca visualizza il testo dipende dalla lingua del sito.Se desideri cambiare questo testo dinamicamente come vedi nella figura qui sotto, dovresti fare qualche passo più complesso.

Inserire l'immagine Descrizione qui

Passaggi:

    .
  1. Crea la tua classe personalizzata e l'eredita da searchboxex
  2. Crea una nuova proprietà di queryprptstring
  3. Definisci il controllo sicuro
  4. Crea controllo delegato

    Codice per i passaggi:

    public class SearchBox : SearchBoxEx
    {
        [Browsable(false)]
        public new string QueryPromptString
        {
            get
            {
                return base.QueryPromptString;
            }
            set
            {
                string fullKey = string.Format("$Resources:{0}", value);
                base.QueryPromptString = SPUtility.GetLocalizedString(fullKey, null, (uint)Thread.CurrentThread.CurrentUICulture.LCID);
            }
        }
    }
    
    <Control Id="SmallSearchInputBox"
               Sequence="10"
               ControlClass="LocalizedSearch.SearchBox"
               ControlAssembly="LocalizedSearch, Version=1.0.0.0, Culture=neutral, PublicKeyToken=71df3f77c17b7c69">
            <Property Name="GoImageUrl">/_layouts/images/gosearch15.png</Property>
            <Property Name="GoImageUrlRTL">/_layouts/images/gosearchrtl15.png</Property>
            <Property Name="GoImageActiveUrl">/_layouts/images/gosearchhover15.png</Property>
            <Property Name="GoImageActiveUrlRTL">/_layouts/images/gosearchrtlhover15.png</Property>
            <Property Name="DropDownMode">ShowDD</Property>
            <Property Name="SearchResultPageURL">/_layouts/osssearchresults.aspx</Property>
            <Property Name="ScopeDisplayGroupName"></Property>
            <Property Name="FrameType">None</Property>
            <Property Name="QueryPromptString">filename,key</Property>
      </Control>
    
    .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top