Frage

Ich habe ein ziemlich einfaches BCS -Modell:

public Guid Id { get; set; }
public SPFieldUrlValue Url { get; set; }
public string Description { get; set; }
public string Owner { get; set; }
public DateTime CreatedOn { get; set; }

Die URL -Eigenschaft enthält sowohl den Titel als auch die URL wie jede SharePoint Hyperlink -Eigenschaft. Das BCS -Modell verfügt über den folgenden Typdeskriptor für die Readlist- und Readitem -Methoden:

<TypeDescriptor Name="Url" TypeName="Microsoft.SharePoint.SPFieldUrlValue">
    <Properties>
        <Property Name="SPCustomFieldType" Type="System.String">`URL</Property>
    </Properties>
</TypeDescriptor>

In der Schema der Liste der Liste habe ich die folgenden Werte für die Fields -Sammlung:

<Field Name="BdcIdentity" DisplayName="BDC Identity" Hidden="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="BdcIdentity" Type="Text" />
<Field Name="Id" DisplayName="Id" Hidden="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Id" Type="Text" />
<Field Name="Url" DisplayName="Url" Format="Hyperlink" Hidden="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Url" Type="URL" />
<Field Name="Description" DisplayName="Description" Hidden="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Description" Type="Text" />
<Field Name="Owner" DisplayName="Owner" Hidden="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Owner" Type="Text" />
<Field Name="CreatedOn" DisplayName="Created On" Hidden="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="CreatedOn" Type="DateTime" />

Nichts zu ausgefallen. Wenn ich die Standardansicht öffne, wird die URL in der Tabellenansicht jedoch nicht ordnungsgemäß angezeigt - sie zeigt nichts an. In der einzelnen Elementansicht wird es ordnungsgemäß angezeigt. Irgendwelche Gedanken darüber, wie man ein spfielidurlValue bekommt, um die Benutzeroberfläche richtig zu rendern?

War es hilfreich?

Lösung

Nach zweieinhalb Monaten (!!!!) konnte PSS eine Problemumgehung mit einem benutzerdefinierten XML -Stylesheet entwickeln, das in Layouts/XSL gespeichert wird:

<xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal">
  <xsl:template match="FieldRef[@Name='Url' and @Format='Hyperlink']" mode="URL_body" priority="1">
    <xsl:param name="thisNode" select="."/>
    <xsl:variable name="url" select="normalize-space(substring-before($thisNode/@*[name()=current()/@Name],','))" />
    <xsl:variable name="desc" select="normalize-space(substring-after($thisNode/@*[name()=current()/@Name],','))" />
    <xsl:variable name="descfld" select="$thisNode/@Description"/>
    <xsl:variable name="urlfld" select="$thisNode/@Url"/>
    <!--  URL: <xsl:value-of select="$urlfld" /><br/>
          Description: <xsl:value-of select="$descfld" /><br/>
      Link: -->
    <a href="{$url}" alt="{$desc}">
      <xsl:value-of select="$desc"/>
    </a>
  </xsl:template>
</xsl:stylesheet>

Andere Tipps

Nach der MSDN -Seite BDC -benutzerdefinierte Eigenschaften:

Diese Eigenschaft hat keinen Einfluss auf andere Methoden als den spezifischen Finder.

Ich frage mich, wie kann ich dieses XSL implementieren? Offcourse Ich kann es erstellen und in Layouts/XSL bereitstellen ... aber es gibt keine Verbindung zwischen der externen Liste und der XSL -Datei?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top