Domanda

Nella mia pagina aspx personalizzata in WSS sto usando un DataFormWebPart con un file xsl per il rendering di alcuni dati. Per passare i valori all'xsl utilizzo i bind dei parametri. In particolare, devo passare l'URL dell'host del server in questo modo:

<ParameterBinding 
    Name="HttpHost" 
    Location="CAMLVariable" 
    DefaultValue="http://hardcoded.com" />

Funziona bene, ma la prossima cosa che voglio fare è ottenere dinamicamente il nome host. Quindi, per capire come ottenerlo da SharePoint, ho aggiunto la seguente associazione:

<ParameterBinding 
    Name="HttpHost" 
    Location="CAMLVariable" 
    DefaultValue='<%# SPContext.Current.Site.Url.Replace
       (SPContext.Current.Site.ServerRelativeUrl, "") %>' />

Ora al problema. Il codice funziona come previsto se utilizzato in un'altra posizione della pagina, ma con il codice sopra riportato Rapporti SharePoint:

  

Errore web part: la proprietà 'ParameterBindings' di 'WebPartPages: DataFormWebPart'   non consente oggetti figlio.

Qualcuno ha un'idea di questo?

Aggiornamento: ho abilitato il codice lato server in base a questo articolo

È stato utile?

Soluzione

Ok, ho trovato una soluzione che non è così elegante ma funziona.

Dopo aver provato vari metodi per manipolare la proprietà ParameterBindings senza successo, ho pensato a come ottenere il valore dinamico lì usando l'attributo Location.

L'attributo ParameterBinding Location si riferisce a dove recuperare il valore. Articoli come questo suggerimenti di " Control () " opzione. Quindi cambiando il parametro vincolante in:

<ParameterBinding
  Name="HttpHost"
  Location="Control(MyHttpHost, Text)"
  DefaultValue="" />

e aggiungendo il seguente codice alla mia pagina:

<asp:TextBox ID="MyHttpHost" runat="server" Visible="false" />
<script runat="server">
protected void Page_Load()
{
  MyHttpHost.Text = 
   SPContext.Current.Site.Url.Replace(SPContext.Current.Site.ServerRelativeUrl, ""); 
}
</script>

... in realtà ha fatto il trucco!

Per accedere ai valori dei parametri all'interno del file XSL di accompagnamento ho inserito gli elementi param nell'elemento root. L'attributo param name deve corrispondere a quello di ParameterBinding :

<xsl:stylesheet ...>
    ...
    <xsl:param name="HttpHost"/>

È quindi possibile fare riferimento al parametro come qualsiasi altra variabile XSL.

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top