动态设置 DataFormWebPart 中 ParameterBinding 的 DefaultValue

发布于 2024-07-14 02:51:07 字数 981 浏览 4 评论 0原文

在 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 报告:

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

有人对此有何看法吗?

我已根据 SharePoint 2007:在页面中使用 ASP.NET 服务器端代码

In my custom aspx page in WSS I am using a DataFormWebPart with an XSL file to render some data. In order to pass values to the XSL I use parameter bindings. Specifically, I need to pass in the server host URL like this:

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

This works fine, but the next thing I want to do is to get the host name dynamically. So figuring out how to get that from SharePoint I added the following binding:

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

Now to the problem. The code works as expected if used some other place in the page, but with the above code SharePoint reports:

Web Part Error: The 'ParameterBindings' property of 'WebPartPages:DataFormWebPart'
does not allow child objects.

Anyone have a take on this?

I have enabled server side code according to SharePoint 2007: using ASP.NET server side code in your pages

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡莣 2024-07-21 02:51:07

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

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

<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 元素放在根元素中。 参数名称属性必须与 ParameterBinding 的属性匹配:

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

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

After trying various methods of manipulating the ParameterBindings property without success I thought of how I could get the dynamic value in there using the Location attribute.

The ParameterBinding Location attribute refers to where to fetch the value from. Articles like this hints of the "Control()" option. So changing the parameter binding to:

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

and adding the following code to my page:

<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 did the trick!

To get to the parameter values from within the accompanying XSL file I put param elements in the root element. The param name attribute must match that of the ParameterBinding:

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

The parameter can then be referenced as any other XSL variable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文