Dynamisch setzen Sie die Default eines Parameterbinding in einem DataFormWebPart
-
03-07-2019 - |
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
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.
Andere Tipps
Mit Server-Variablen macht wahrscheinlich mehr Sinn: http: / /mdasblog.wordpress.com/2007/10/19/data-view-web-part-parameters-based-on-server-variables/