在DataFormWebPart中动态设置ParameterBinding的DefaultValue
问题描述:
在我的WSS自定义aspx页面中,我使用带有xsl文件的DataFormWebPart来呈现一些数据。为了将值传递给xsl,我使用参数绑定。具体而言,我需要在服务器主机URL这样的经过:在DataFormWebPart中动态设置ParameterBinding的DefaultValue
<ParameterBinding
Name="HttpHost"
Location="CAMLVariable"
DefaultValue="http://hardcoded.com" />
这工作得很好,但我想要做的下一件事是动态获取主机的名称。因此,搞清楚如何从SharePoint中获取该信息,我添加了以下绑定:
<ParameterBinding
Name="HttpHost"
Location="CAMLVariable"
DefaultValue='<%# SPContext.Current.Site.Url.Replace
(SPContext.Current.Site.ServerRelativeUrl, "") %>' />
现在解决问题。代码工作,如果在页面中使用的其他一些地方如预期,但与上面的代码的SharePoint报道:
Web Part Error: The 'ParameterBindings' property of 'WebPartPages:DataFormWebPart' does not allow child objects.
任何人有这样的走?
更新:我已经根据this article
答
确定启用服务器端代码,我发现了一个解决方案,是不是优雅,但它的工作原理。
在尝试了各种操纵ParameterBindings属性而没有成功的方法之后,我想到了如何使用Location属性获得动态值。
ParameterBinding
Location
属性是指从哪里获取值。像“控制()”选项this提示。因此,改变参数绑定到:
<ParameterBinding
Name="HttpHost"
Location="Control(MyHttpHost, Text)"
DefaultValue="" />
并添加以下代码到我的网页:
<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>
...实际上做的伎俩!
要从附带的XSL文件中获取参数值,我将参数元素放在根元素中。的PARAM NAME属性必须匹配ParameterBinding
的:
<xsl:stylesheet ...>
...
<xsl:param name="HttpHost"/>
参数然后可以作为任何其他XSL变量被引用。
的URL我会同意,所以+1的具体情况。但是我的答案也适用于希望传入xsl的任何其他值。 – 2010-02-08 08:03:58