Frage

In meiner benutzerdefinierten aspx Seite in WSS Ich verwende einen DataFormWebPart mit einer XSL-Datei einige Daten zu machen. Um Werte an die xsl passieren verwende ich Parameterbindungen. Genauer gesagt, ich brauche wie dies in der Server-Host-URL weitergeben muß:

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

Das funktioniert gut, aber das nächste, was ich tun möchte, ist den Hostnamen dynamisch zu bekommen. So herauszufinden, wie die von Sharepoint erhalten Ich habe die folgende Bindung:

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

Nun zum Problem. Der Code funktioniert wie erwartet, wenn verwendet einen anderen Platz in der Seite, aber mit den oben genannten Code Sharepoint-Berichten:

  

Web-Part-Fehler: Die 'ParameterBindings' Eigentum 'WebPartPages: DataFormWebPart'   nicht untergeordnete Objekte ermöglichen.

Wer eine Meinung dazu haben?

Update: Ich habe Server-seitigen Code aktiviert gemäß dieser Artikel

War es hilfreich?

Lösung

Ok, ich fand eine Lösung, die nicht so elegant ist, aber es funktioniert.

Nach verschiedenen Methoden der Manipulation der ParameterBindings Eigenschaft ohne Erfolg versucht, ich dachte daran, wie ich den dynamischen Wert in dort könnte das Location-Attribut.

Das ParameterBinding Location Attribut bezieht sich auf, wo aus dem Wert zu holen. Artikel wie diese Hinweise auf die "Control ()" Option. So ändert den Parameter Bindung an:

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

und das Hinzufügen von dem folgenden Code auf meine Seite:

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

... hat eigentlich den Trick!

auf die Parameterwerte erhalten innerhalb der begleitenden XSL-Datei I param Elemente in das Root-Element setzen. Das param name-Attribut muss, dass der ParameterBinding entsprechen:

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

Der Parameter kann dann wie jedes andere XSL-Variable referenziert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top