Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 动态设置DataFormWebPart中ParameterBinding的DefaultValue_Asp.net_Sharepoint_Dataformwebpart_Parameterbinding - Fatal编程技术网

Asp.net 动态设置DataFormWebPart中ParameterBinding的DefaultValue

Asp.net 动态设置DataFormWebPart中ParameterBinding的DefaultValue,asp.net,sharepoint,dataformwebpart,parameterbinding,Asp.net,Sharepoint,Dataformwebpart,Parameterbinding,在WSS中的自定义aspx页面中,我使用带有xsl文件的DataFormWebPart来呈现一些数据。为了将值传递给xsl,我使用参数绑定。具体来说,我需要像这样传入服务器主机url: <ParameterBinding Name="HttpHost" Location="CAMLVariable" DefaultValue="http://hardcoded.com" /> 这很好,但我想做的下一件事是动态获取主机名。因此,为了弄清楚如何从Sha

在WSS中的自定义aspx页面中,我使用带有xsl文件的DataFormWebPart来呈现一些数据。为了将值传递给xsl,我使用参数绑定。具体来说,我需要像这样传入服务器主机url:

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

Web部件错误:“WebPartPages:DataFormWebPart”的“ParameterBindings”属性 不允许子对象

有人对此有看法吗


更新:我已经根据

启用了服务器端代码。好的,我找到了一个解决方案,虽然没有那么优雅,但很有效

在尝试了各种操作ParameterBindings属性的方法但没有成功之后,我想到了如何使用Location属性获取其中的动态值

参数绑定
位置
属性指从何处获取值。类似于“Control()”选项提示的文章。因此,将参数绑定更改为:

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

然后可以将该参数作为任何其他XSL变量引用。

使用服务器变量可能更有意义:

对于url的具体情况,我同意,因此+1。但我的答案也适用于希望传递到xsl中的任何其他值。
<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:stylesheet ...>
    ...
    <xsl:param name="HttpHost"/>