2010-02-12 44 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"/>