Distribuire una parte web ad una pagina durante l'attivazione funzione all'interno di una soluzione Sandbox

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/3842

  •  16-10-2019
  •  | 
  •  

Domanda

mi è stato sbattere la testa contro un muro su questo per l'ultimo paio di giorni. Ho un requisito piuttosto semplice, ma io riesco a capire come possa essere raggiunto entro un soluzione in modalità sandbox. Sono depresso perché penso che la sua una limitazione critica che causerà mi dolore nelle soluzioni future.

Ecco lo scenario.

Ho un sito esistente e voglio essere in grado di attivare una funzione, e poi come parte di tale attivazione, parti goccia web su qualche pagine specifiche. Nel mio caso voglio essere in grado di farlo cadere nella pagina "AllItems.aspx" di una lista, ma sto altrettanto problemi ad aggiungere alla default.aspx home page. Sarei felice in entrambi i casi.

Nota: io voglio essere in grado di attivare questo sul sito esistente, non voglio creare una nuova definizione di sito

.

Ecco che cosa ho provato:

  1. Caratteristica Ricevitore: No Go. Non puoi utilizzare la classe SPLimitedWebPartManager, e la classe SPWebPartManager funziona solo nel contesto della pagina dove la sua istanziato. Così bascially, non puoi fare questo nel codice.

  2. modulo XML: Penso che questo sia il percorso più probabile in avanti, tuttavia sembra sempre voglia di disposizione un file al sito. Per esempio, se voglio aggiungere una web part alla home page (default.aspx), quindi non sembra essere un modo per ottenere solo un riferimento alla pagina, sempre vuole di sovrascrivere con un nuovo file. Ma io non voglio farlo, voglio solo aggiungere una web part alla pagina esistente. Vedere la mia elementi XML di seguito, ho provato varie combinazioni di "IgnoreIfAlreadyExists" e rimuovere l'attributo Path, e l'impostazione vuoto.

  3. Delega controllo:. Non ammessi nella sandbox

  4. Io in realtà voglio essere in grado di aggiungere una web part alla forma "AllItems.aspx" di una lista, così ho cercato anche di aggiungere la parte web tramite il file schema.xml come descritto qui: Aggiungi Web Part attraverso lo schema.xml , ma questo non ha funzionato neanche. Dovrei essere in grado di farlo da più pesantemente personalizzare la definizione di elenco, ma che sembra un po 'esagerato e sono riluttanti a farlo prima di escludere le altre opzioni.

Quindi, l'unica Neat modo che posso vedere attraverso di essa è una sorta di pagina di "Configurazione", che poi lo fa con i servizi web. Ma questo è un dolore, con l'utente che "Attiva" la funzione e poi "Attiva" di nuovo sulla mia pagina di configurazione.

In ogni caso, potrebbe essere solo che mi manca qualcosa di ovvio. Stato un po 'tra XML armeggiare su SharePoint per me, e questo è il mio primo soluzione Sandbox. Davvero la speranza che qualcun altro ha incrinato il dado.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Name="Pages">
    <File Path="" Url="default.aspx">
      <AllUsersWebPart WebPartZoneID="Left" WebPartOrder="1">
        <![CDATA[
              <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" xmlns:iwp="http://schemas.microsoft.com/WebPart/v2/Image">
                <Assembly>(Assembly), Version=1.0.0.0, Culture=neutral, PublicKeyToken=12baeb5f1600543c</Assembly>
                <TypeName>(Typename)</TypeName>
                <FrameType>None</FrameType>
                <Title>ListAnnouncement</Title>
              </WebPart>
            ]]>
      </AllUsersWebPart>
    </File>
</Module>
</Elements>
È stato utile?

Soluzione

Dato che l'obiettivo è quello di non avere passaggi manuali, mi viene in mente una soluzione piuttosto hacker che può funzionare.

Usa un <CustomAction Location="ScriptLink" ScriptBlock="..."> allo script 'auto' add sulle pagine. Nel gestore di eventi del carico aggiunto in questo script, utilizzare l'OM cliente per scoprire le novità web part da aggiungere alla pagina. Avanti, per scoprire che cosa Web Parts per aggiungere dopo una funzione è attivata, utilizzare un ricevitore caratteristica di scrivere una registrazione ad un 'Web Parts per aggiungere' lista. In questa lista, si potrebbe aggiungere quattro colonne:

  • URL della pagina
  • Web Part Zone
  • Indice Zone
  • Web Part Type

Io ho la sensazione che questo è un po 'di una soluzione alternativa.

Le grandi aspetti negativi sono il fatto che con questa configurazione si deve interrogare l'elenco di nuove web part ogni richiesta, o essere intelligenti e aggiungere un po 'di logica allo script carico polling disabilitare a più di una volta al giorno (HTTP Cookie per la conservazione ).

Per quanto posso dire, funzionerà nella sandbox però!

Speranza che aiuta,

Wouter van Vugt SharePoint HackMaster, ma anche a costruire il software SharePoint sensibile ... http://blogs.code-counsel.net/wouter

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