2009-03-04 6 views
6

Nella mia pagina ASPX personalizzata in WSS sto utilizzando un DataFormWebPart con un file xsl per il rendering di alcuni dati. Per passare valori a xsl uso i binding di parametri. In particolare, ho bisogno di passare l'url host server in questo modo:Imposta dinamicamente il valore predefinito di un parametroBinding in un DataFormWebPart

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

Questo funziona bene, ma la prossima cosa che voglio fare è quello di ottenere il nome host in modo dinamico. Quindi capire come ottenere da SharePoint ho aggiunto il seguente legame:

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

Ora al problema. Il codice funziona come previsto se usato qualche altro posto nella pagina, ma con i suddetti rapporti di codice di SharePoint:

Web Part Error: The 'ParameterBindings' property of 'WebPartPages:DataFormWebPart' does not allow child objects.

Qualcuno ha una prendere su questo?

Aggiornamento: Ho attivato il codice lato server in base alle this article

risposta

5

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

Dopo aver provato vari metodi di manipolazione della proprietà ParameterBindings senza successo, ho pensato a come ottenere il valore dinamico lì utilizzando l'attributo Location.

L'attributo ParameterBindingLocation si riferisce a dove recuperare il valore. Articoli come this suggerimenti dell'opzione "Control()". Così cambia il parametro vincolante per:

<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 ottenere i valori dei parametri dall'interno del file XSL allegato, inserisco gli elementi param nell'elemento root. L'attributo param name deve corrispondere a quello del ParameterBinding:

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

Il parametro può quindi essere fatto riferimento come qualsiasi altra variabile XSL.

Problemi correlati