StreamAccessors >> SharePoint 2010 BCSは複数の添付ファイルを返すことができますか?
-
09-12-2019 - |
質問
SharePoint 2010 BCSは複数の添付ファイルを返しますか?エンティティごとに複数の添付ファイルを格納するデータベースがあります。それらのすべてがアクセス可能にしたいのですが、これが可能かどうかを言うためにBCS / BDCでの経験が不十分です。
解決
はいStreamAccessorメソッドを使用してN個の添付ファイルを持つことができます。2つの方法がある以下のコードを参照してください。追加の文書を拾うためのメイン文書などを拾うためのもの。後ろのコードでは、同じ関数を使用してStreamオブジェクトを返すことができます。私がすでにこれを何度も実行しているので、あなたがそれ以上の援助を必要とするかどうか私に知らせてください。
<!-- start document StreamAccessor method -->
<Method Name="ReadDocumentLink" IsStatic="false" LobName="ReadDocumentLink" IsCached="true">
<Parameters>
<Parameter Direction="In" Name="@Id">
<TypeDescriptor TypeName="System.Int32" IdentifierName="ID" Name="ID" />
</Parameter>
<Parameter Name="StreamData" Direction="Return">
<TypeDescriptor Name="StreamData" TypeName="System.IO.Stream" />
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="StreamAccessor" ReturnParameterName="StreamData" ReturnTypeDescriptorPath="StreamData" Default="true" Name="MainDataStream" DefaultDisplayName="Document">
<Properties>
<Property Name="MimeTypeField" Type="System.String">DocumentMimeType</Property>
<Property Name="FileNameField" Type="System.String">DocumentFileName</Property>
<Property Name="Extension" Type="System.String">DocumentExtension</Property>
</Properties>
</MethodInstance>
</MethodInstances>
</Method>
<!-- end document StreamAccessor method -->
<!-- start document StreamAccessor method -->
<Method Name="ReadAdditionalDocumentLink" IsStatic="false" LobName="ReadAdditionalDocumentLink" IsCached="true">
<Parameters>
<Parameter Direction="In" Name="@Id">
<TypeDescriptor TypeName="System.Int32" IdentifierName="ID" Name="ID" />
</Parameter>
<Parameter Name="StreamData" Direction="Return">
<TypeDescriptor Name="StreamData" TypeName="System.IO.Stream" />
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Type="StreamAccessor" ReturnParameterName="StreamData" ReturnTypeDescriptorPath="StreamData" Name="AdditionalDataStream" DefaultDisplayName="Additional Document">
<Properties>
<Property Name="MimeTypeField" Type="System.String">AdditionalDocumentMimeType</Property>
<Property Name="FileNameField" Type="System.String">AdditionalDocumentFileName</Property>
<Property Name="Extension" Type="System.String">AdditionalDocumentExtension</Property>
</Properties>
</MethodInstance>
</MethodInstances>
</Method>
<!-- end document StreamAccessor method -->
. 他のヒント
「エンティティごとに複数の添付ファイル」を使用すると、SQL表に複数のバイナリ列があることを意味します。各列のBCSモデルでStreamAccessorメソッドを作成しようとすると、ここに詳細を参照してください。
href="http://msdn.microsoft.com/en-us/library/ff46410%28V=オフセンド14%29.aspx" REL="NOFOLLOW"> XMLスニペット:StreamAccessorメソッドのモデリング
このようなカスタムXSLTを使用して、ビジネスデータWebパーツのバイナリコンテンツへのリンクを表示できます。
<a>
<xsl:variable name="downloadUrl" select="concat($DownloadExternalDataUrl, ddwrt:UrlEncode('BCSStreamAccessorMethodInstanceName'), '&IsXmlEncodedStreamName=true&ItemId=', @*[name()=$ColumnKey])" />
<xsl:attribute name="href">
<xsl:value-of select="$downloadUrl" />
</xsl:attribute>
<xsl:attribute name="onclick">javascript:DownloadExternalData('BCSStreamAccessorMethodInstanceName', '<xsl:value-of select="@*[name()=$ColumnKey]" />', '<xsl:value-of select="concat($downloadUrl, '&InvisibleFrame=true')" />'); return false;</xsl:attribute>
<xsl:value-of select="@tpar_binary_fname" />
</a>
<span style="display:none">
<iframe>
<xsl:attribute name="name">
<xsl:value-of select="concat('BCSStreamAccessorMethodInstanceName', @*[name()=$ColumnKey], 'DownloadFrame')" />
</xsl:attribute>
</iframe>
</span>
. 所属していません sharepoint.stackexchange