XSLT Web部件显示HTML

时间:2014-04-11 18:43:22

标签: sharepoint sharepoint-2010 web-parts

请原谅,如果有更好的方法,我不太熟悉SharePoint Web部件,我现在才开始创建它们。

我想要做的是拥有一个Web部件,我可以将其放入页面,给它一个参数,然后Web部件使用所述参数进行API调用,进行一些XSL转换,并吐出HTML我想在页面上显示。在我看来,它似乎是一个简单的小网页部分,我只是想确保这是最好的方式去做,而不是重复已经存在的东西。

我已经完成了这个creating a basic web part演练,我想我可以使用web部件属性从用户那里获取参数。我怎么能让它输出HTML呢?我改变了“你好,世界!”文本输出一些HTML,它似乎已被删除?

非常感谢,如果有什么看似noob-ish的话,对不起!

3 个答案:

答案 0 :(得分:1)

从我看到的,你想要做的事情有两个主要部分。

  1. 将您的参数放入查询
  2. 使用一些HTML格式化结果
  3. 稍后重复使用
  4. 有很多方法可以做到这一点,但我将概述我认为最快和最简单的方法。

    将您的参数放入查询

    在SharePoint 2010中,SharePoint设计器为此提供了一些很好的选择。 因此,第1步是在SharePoint Designer中打开网页。 单击“插入”选项卡,然后单击“数据视图”下拉列表,并选择要从中获取数据的列表。

    Data View

    现在单击Options选项卡,然后单击Parameters enter image description here

    该对话框显示了一些将信息提取到查询中的选项。

    enter image description here

    查询字符串参数易于使用。服务器变量也非常方便。

    enter image description here

    对于我们的示例,我们将选择查询字符串并将默认值设置为1(这将是我们想要检索的项目的ID)。由于我们已将此设置为默认值,即使查询字符串为空,我们仍会在参数中获取默认值。

    然后点击过滤器。

    enter image description here

    我们将Field Criteria设置为使用我们刚刚制作的参数。

    enter image description here

    现在,您可以将页面保存在SharePoint Designer中并测试结果。很快。

    使用一些HTML格式化结果

    在SharePoint中,XSLT是将您自己的HTML放在您从SharePoint检索到的某些数据的最佳方式。

    另外,为了在查询中获取参数,我们可以使用参数绑定添加它:

    如果您是XSL新手,那么这里是最好的xsl工具:

    http://spexp-blog-files.s3.amazonaws.com/blog/files/spe-magic-data-view-builder.xsl

    要使用魔术数据视图构建器,请将此文件保存到服务器场中的documetn库。

    如果您希望集中XSL模板以获得更好的重用(强烈推荐),您可以将各个XSL文件放在一个中央位置进行存储。在WSS或SharePoint Foundation环境中,我建议您在网站集的根网站中使用文档库。在MOSS或SharePoint Server 2010环境中,我建议将XSL文件放在/ Style Library / XSL样式表位置,因为这是SharePoint默认存储其XSL的位置。

    然后将URL粘贴到XSL链接中以替换main.xsl并将Default更改为FALSE。当您在Designer中查看webpart时,此属性位于<XmlDefinition>标记的末尾附近。

    ...  <XslLink Default="TRUE">main.xsl</XslLink><Toolbar Type="Standard"/></View></XmlDefinition>
    

    从那里,您可以保存页面,魔术数据视图构建器中的XSL向导将引导您创建自己的xsl以输出您的html。

    重新使用您的Webpart

    要重复使用,请点击保存&#34;到网站库&#34;当您的光标位于SharePoint Designer中的wepart上时。这将把webpart保存到&#34; Custom&#34;下的画廊中。组。从那里,您可以将webpart插入其他页面,就像开箱即用的webparts一样。 enter image description here

答案 1 :(得分:0)

我认为我们需要更多关于您尝试获取Web部件的信息。如果使用SharePoint数据视图Web部件,则可以将其指向数据源,编写一些XSL以转换数据,以便按照您希望的方式将HTML输出到页面。例如,假设我有一个培训课程的SharePoint列表。我可以创建一个数据视图Web部件,它将查询字符串或其他输入参数作为其过滤器,并过滤类列表,以显示与我的查询字符串或输入参数的ID匹配的类。然后我可以格式化我的XSL以输出有关我想要的任何花哨的HTML呈现的类的详细信息。

这有帮助吗?

答案 2 :(得分:0)

  

“我更改了”Hello,world!“文本以输出一些HTML而且似乎   被剥夺了?“

请注意,在您的示例中,它使用LiteralControl(),默认情况下,HTML Escapes任何文本。因此,如果您需要通过LiteralControl.Text元素输出HTML,则需要将Mode设置为“Passthrough”。

protected override void CreateChildControls()
{
    base.CreateChildControls();
    LiteralControl message = new LiteralControl();

    // !! add this !!
    message.Mode = LiteralMode.PassThrough;

    message.Text = DisplayMessage; // <-- containing HTML
    Controls.Add(message);
}