2010-02-12 72 views
2

我正试图编写一个自定义呈现模板,用于列表的DisplayForm中,该列表的字段包括Title,HeaderImageUrl,Body。我已经走到这一步了以下内容:共享点呈现模板设置字段的属性

<SharePoint:RenderingTemplate ID="NewsListForm" runat="server"> 
<Template> 
    <h1><SharePoint:FieldValue FieldName="Title" runat="server"/></h1> 
    <div> 
     <p> 
      <SharePoint:UrlField FieldName="HeaderImageUrl" runat="server"></SharePoint:UrlField> 
      <SharePoint:RichTextField FieldName="Body" runat="server" /> 
     </p> 
    </div> 
</Template> 
</SharePoint:RenderingTemplate> 

HeaderImageUrl场被配置为一个图片URL,但是当我使用UrlField控制,它呈现的链接。

我想有可能是抢字段值,并把它们放在属性的方式,所以是这样的:

<asp:Image ImageUrl="<% FieldValue["HeaderImageUrl"] %>" runat="server"/> 

如果这种事情是不可能的,那么有没有其他控制Microsoft.SharePoint.WebControls将呈现来自URL的图像?

回答

0

原来我的问题是,我没有设置图像列设置为呈现为图像,而不是作为链接。内置的Microsoft.SharePoint。UrlField控件工作得很好,事实证明。

2

我看到的所有调用URL字段以显示为图像的例子都是通过C#代码实现的。这是非常烦人的,因为大多数Web部分位都可以在不使用C#代码的情况下编写。您可能还需要沿着这条路走下去......也许是一个自定义的现场控制或用户控制。

即使上面的代码中的确得到了HeaderImageUrl值时,它会无法正常工作地址值(容易混淆):

[实际的URL指定] [某些奇怪的分隔符字符串] [描述的领域的网址(通常是实际的网址,如果你没有指定它的话)]

所以你需要分割字符串与德尔米的值,并使用[0](第一)作为你注入到图像网址。

如果你找到一种方法来做到这一点,而不写C#代码请做后。

p.s.您是否考虑过使用具有xsl部分的DataFormWebPart,您可以在其中提取所需的内容?

例子:你可以坚持以下语法到任何ASPX/ASCX文件:

<%@ Register tagprefix="SharePoint" namespace="Microsoft.SharePoint.WebControls" assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register tagprefix="WebPartPages" namespace="Microsoft.SharePoint.WebPartPages" assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register Tagprefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 

<WebPartPages:DataFormWebPart runat="server" IsIncluded="True" FrameType="None" 
NoDefaultStyle="TRUE" ViewFlag="0" Title="My List Display" 
Default="FALSE" ID="dfwp_MyListDisplay" 
DisplayName="My List Display"> 
<DataSources> 
     <SharePoint:SPDataSource runat="server" DataSourceMode="List" UseInternalName="true" 
     selectcommand='&lt;View&gt;&lt;Query&gt;&lt;Where&gt;&lt;Eq&gt;&lt;FieldRef Name=&quot;Category&quot;/&gt;&lt;Value Type=&quot;Text&quot;&gt;Header&lt;/Value&gt;&lt;/Eq&gt;&lt;/Where&gt;&lt;/Query&gt;&lt;/View&gt;' id="Utility_x0020_Navigation1"><SelectParameters><WebPartPages:DataFormParameter Name="ListName" ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue="My List Display"/> 
     <asp:Parameter Name="ListName" DefaultValue="LIST NAME" /> 
     <asp:Parameter Name="WebUrl" DefaultValue="<% $SPUrl:~SiteCollection/ %>" /> 
     </SelectParameters> 
     </SharePoint:SPDataSource> 
    </DataSources> 
    <ParameterBindings> 
    <ParameterBinding Name="dvt_apos" Location="Postback;Connection"/> 
    <ParameterBinding Name="PageURL" Location="ServerVariable(URL)" DefaultValue=""/> 
    <ParameterBinding Name="SiteUrl" Location="ServerVariable(SERVER_NAME)" DefaultValue=""/> 
</ParameterBindings> 
    <datafields>@Title,Title;@URL,URL;@Category,Category;@Parent_x0020_item,Parent_x0020_item;@Sort_x0020_Order,Sort Order;@ID,ID;@ContentType,Content Type;@Modified,Modified;@Created,Created;@Author,Created By;@Editor,Modified By;@_UIVersionString,Version;@Attachments,Attachments;@File_x0020_Type,File Type;@FileLeafRef,Name (for use in forms);@FileDirRef,Path;@FSObjType,Item Type;@_HasCopyDestinations,Has Copy Destinations;@_CopySource,Copy Source;@ContentTypeId,Content Type ID;@_ModerationStatus,Approval Status;@_UIVersion,UI Version;@Created_x0020_Date,Created;@FileRef,URL Path;</datafields> 
    <xsl> 
    YOUR XSLT HERE 
    </xsl> 

</WebPartPages:DataFormWebPart> 
+0

我不想使用DataFormWebPart的原因之一是因为它需要SharePoint Designer。我希望将我部署的所有内容都放在一个解决方案中。 – 2010-02-15 20:14:26

+0

嘿, 您不需要SharePoint Designer创建DataFormWebPart。您可以将DataFormWebPart语法添加到任何ascx或aspx文件,包括您可能部署的任何页面布局。看看我对我的帖子所做的修改。 – Zeb 2010-02-16 09:28:44

0

无法ATM测试(无环境),但我敢肯定我这样做过。

尝试这些:

<SharePoint:FieldValue FieldName="HeaderImageUrl" runat="server"/> 

或:

<img src="<SharePoint:FieldValue FieldName="HeaderImageUrl" runat="server"/>" /> 

我会回来检查这一个,做一个实际测试周一如果这些没有工作,你仍然需要帮助。

1

下面的代码将让你的ImageField的网址:

SPListItem item = GetItem(); 
string imagefieldhtml = item["HeaderImageUrl"].ToString(); 
ImageFieldValue imagefield = new ImageFieldValue(imagefieldhtml); 

var url = imagefield.ImageUrl; 

所以,也许改变你对这样的事情会帮助你,也许帮你ATLEAST ......?

<asp:Image ImageUrl="<% (ImageFieldValue ["HeaderImageUrl"]).ImageUrl %>" runat="server"/>