首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态设置ParameterBinding在DataFormWebPart中的DataFormWebPart

动态设置ParameterBinding在DataFormWebPart中的DataFormWebPart
EN

Stack Overflow用户
提问于 2009-03-04 10:08:05
回答 2查看 12.5K关注 0票数 6

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

代码语言:javascript
复制
<ParameterBinding 
    Name="HttpHost" 
    Location="CAMLVariable" 
    DefaultValue="http://hardcoded.com" />

这很好,但是我想要做的下一件事是动态获取主机名。因此,在研究如何从SharePoint获得这些信息时,我添加了以下绑定:

代码语言:javascript
复制
<ParameterBinding 
    Name="HttpHost" 
    Location="CAMLVariable" 
    DefaultValue='<%# SPContext.Current.Site.Url.Replace
       (SPContext.Current.Site.ServerRelativeUrl, "") %>' />

现在是问题所在。如果在页面中使用其他位置,代码将按预期工作,但对于上面的代码,SharePoint报告:

Web部件错误:'WebPartPages:DataFormWebPart‘的'ParameterBindings’属性不允许子对象。

有人对此有看法吗?

更新:我已经根据这篇文章启用了服务器端代码

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-05 11:05:32

好的,我找到了一个不那么优雅的解决方案,但它有效。

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

ParameterBinding Location属性指的是从哪里获取值。类似于"Control()“选项的提示的文章。因此,将参数绑定更改为:

代码语言:javascript
复制
<ParameterBinding
  Name="HttpHost"
  Location="Control(MyHttpHost, Text)"
  DefaultValue="" />

并将以下代码添加到我的页面:

代码语言:javascript
复制
<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>

...actually成功了!

为了从随附的XSL文件中获得参数值,我将param元素放在根元素中。param属性必须与ParameterBinding的属性匹配。

代码语言:javascript
复制
<xsl:stylesheet ...>
    ...
    <xsl:param name="HttpHost"/>

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

票数 5
EN

Stack Overflow用户

发布于 2010-02-07 14:29:26

使用服务器变量可能更有意义:http://mdasblog.wordpress.com/2007/10/19/data-view-web-part-parameters-based-on-server-variables/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/609943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档