リストアイテムを1つずつスクロールします
-
16-10-2019 - |
質問
アナウンスリストがあり、すべてのアナウンスを同時に表示する代わりに、かなりの数があるかもしれません。それらを1つずつスクロールしたいと思います。
SharePoint以外では、これを達成するために使用する方法がかなりあります。可能であればjQueryを使用します。私はサイトでjqueryを使用しましたが、カルーセルを使用したいと思います。このため、アナウンスリストはテーブルに載ることはできません。
だから、私は3つのことのいずれかが必要です。
a)XSLを介して、おそらくコンテンツエディターWebパーツにデータを出力できますか?これにより、テーブル構造が削除され、順序付けられていないリストに置き換えられます。私はXSLでそれほど熱くないので、これを達成する方法について正しい方向に押し込む必要があります。
b)アナウンスリストのテーブル構造で動作できるjQueryソリューションを見つけます。
c)私が考えていなかった他のいくつかの解決策。
アイデアの人はいますか?
編集:データフォームのWebパーツを使用してXSLルートを下ってみようとしました。
テンプレートに別のDFWPを使用し、変更する必要があると思うものを変更しました。とにかく私が必要なものに近づいていますか? (次のエラーが発生していることに注意してください:)
このWebパーツを表示できません。問題をトラブルシューティングするには、Microsoft Office SharePoint DesignerなどのWindows SharePoint Services互換のHTMLエディターでこのWebページを開きます。問題が続く場合は、Webサーバー管理者に連絡してください。
コード
<WebPartPages:DataFormWebPart runat="server" SuppressWebPartChrome="False" Description="" PartImageSmall="" DataSourceID="" MissingAssembly="Cannot import
this Web Part." FrameType="TitleBarOnly" ConnectionID="00000000-0000-0000-0000-000000000000" DetailLink="" ExportControlledProperties="True" IsVisible="True"
AllowRemove="True" AllowEdit="True" ID="g_999db424_8180_48da_a7c7_7457a07205f9" Dir="Default" FrameState="Normal" ViewContentTypeId="" AllowConnect="True"
PageSize="-1" AllowMinimize="True" IsIncludedFilter="" ShowWithSampleData="False" ChromeType="TitleOnly" HelpMode="Modeless" ExportMode="All" ViewFlag="0"
Title="Courses I am attending" HelpLink="" AllowHide="True" AllowZoneChange="True" PartOrder="1" UseSQLDataSourcePaging="True" PartImageLarge=""
IsIncluded="True" NoDefaultStyle="TRUE" __MarkupType="vsattributemarkup" __WebPartId="{999DB424-8180-48DA-A7C7-7457A07205F9}" __AllowXSLTEditing="true"
WebPart="true" Height="" Width=""><DataSources>
<SharePoint:AggregateDataSource runat="server" IsSynchronous="" SeparateRoot="true" RootName="" RowsName=""
ID="Announcements"><Sources><SharePoint:SPDataSource runat="server" DataSourceMode="List" SelectCommand="<View></View>" UpdateCommand=""
InsertCommand="" DeleteCommand="" UseInternalName="True"><SelectParameters>
<asp:Parameter DefaultValue="{A6930BA9-B6E2-4D1D-A3FE-5379CE9F01E5}" Name="ListID"></asp:Parameter>
</SelectParameters>
<UpdateParameters>
<asp:Parameter DefaultValue="{A6930BA9-B6E2-4D1D-A3FE-5379CE9F01E5}" Name="ListID"></asp:Parameter>
</UpdateParameters>
<InsertParameters>
<asp:Parameter DefaultValue="{A6930BA9-B6E2-4D1D-A3FE-5379CE9F01E5}" Name="ListID"></asp:Parameter>
</InsertParameters>
<DeleteParameters>
<asp:Parameter DefaultValue="{A6930BA9-B6E2-4D1D-A3FE-5379CE9F01E5}" Name="ListID"></asp:Parameter>
</DeleteParameters>
</SharePoint:SPDataSource><SharePoint:SPDataSource runat="server" DataSourceMode="List" SelectCommand="<View></View>" UpdateCommand=""
InsertCommand="" DeleteCommand="" UseInternalName="True"><SelectParameters>
<asp:Parameter DefaultValue="{DEEE6EF9-4CCF-408B-A90F-89AD21FB0FD1}" Name="ListID"></asp:Parameter>
</SelectParameters>
<UpdateParameters>
<asp:Parameter DefaultValue="{DEEE6EF9-4CCF-408B-A90F-89AD21FB0FD1}" Name="ListID"></asp:Parameter>
</UpdateParameters>
<InsertParameters>
<asp:Parameter DefaultValue="{DEEE6EF9-4CCF-408B-A90F-89AD21FB0FD1}" Name="ListID"></asp:Parameter>
</InsertParameters>
<DeleteParameters>
<asp:Parameter DefaultValue="{DEEE6EF9-4CCF-408B-A90F-89AD21FB0FD1}" Name="ListID"></asp:Parameter>
</DeleteParameters>
</SharePoint:SPDataSource>
</Sources><Aggregate><concat name="data source"><datasource name="Announcements" id="0" Type="SPList"/></concat></Aggregate>
</SharePoint:AggregateDataSource>
</DataSources>
<ParameterBindings>
<ParameterBinding Name="dvt_apos" Location="Postback;Connection"/>
<ParameterBinding Name="UserID" Location="CAMLVariable" DefaultValue="CurrentUserName"/>
<ParameterBinding Name="Today" Location="CAMLVariable" DefaultValue="CurrentDate"/>
<ParameterBinding Name="dvt_adhocmode" Location="Postback;Connection"/>
<ParameterBinding Name="dvt_fieldsort" Location="Postback;Connection"/>
<ParameterBinding Name="dvt_filterfield" Location="Postback;Connection"/>
<ParameterBinding Name="dvt_sortdir" Location="Postback;Connection"/>
<ParameterBinding Name="dvt_sortfield" Location="Postback;Connection"/>
<ParameterBinding Name="dvt_sorttype" Location="Postback;Connection"/>
<ParameterBinding Name="dvt_filterfields" Location="Postback;Connection"/>
<ParameterBinding Name="dvt_partguid" Location="Postback;Connection"/>
</ParameterBindings>
<DataFields>
</DataFields>
<Xsl>
<xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema" 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:output method="html" indent="no"/>
<xsl:param name="dvt_adhocmode">sort</xsl:param>
<xsl:decimal-format NaN=""/>
<xsl:param name="dvt_apos">'</xsl:param>
<xsl:param name="UserID" />
<xsl:param name="dvt_fieldsort" />
<xsl:param name="dvt_filterfield" />
<xsl:param name="dvt_sortdir">ascending</xsl:param>
<xsl:param name="dvt_sortfield" />
<xsl:param name="dvt_sorttype">text</xsl:param>
<xsl:param name="dvt_filterfields" />
<xsl:param name="dvt_partguid" />
<xsl:variable name="dvt_1_automode">0</xsl:variable>
<xsl:template match="/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:x="http://www.w3.org/2001/XMLSchema"
xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" xmlns:asp="http://schemas.microsoft.com/ASPNET/20"
xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:SharePoint="Microsoft.SharePoint.WebControls">
<xsl:call-template name="dvt_1"/>
</xsl:template>
<xsl:template name="dvt_1">
<xsl:variable name="dvt_StyleName">Table</xsl:variable>
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row" />
<xsl:variable name="dvt_RowCount" select="count($Rows)" />
<xsl:variable name="dvt_IsEmpty" select="$dvt_RowCount = 0" />
<xsl:choose>
<xsl:when test="$dvt_IsEmpty">
<xsl:call-template name="dvt_1.empty" />
</xsl:when>
<xsl:otherwise><ul id="announcementList" border="0" width="100%" cellpadding="2" cellspacing="0">
<li>
<xsl:call-template name="dvt.headerfield" ddwrt:atomic="1"
xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime">
<xsl:with-param name="fieldname">@Title</xsl:with-param>
<xsl:with-param name="fieldtitle">Title</xsl:with-param>
<xsl:with-param name="displayname">Title</xsl:with-param>
<xsl:with-param name="sortable">1</xsl:with-param>
<xsl:with-param name="fieldtype">x:string</xsl:with-param>
</xsl:call-template>
</li>
<li>
<xsl:call-template name="dvt.headerfield" ddwrt:atomic="1"
xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime">
<xsl:with-param name="fieldname">@Created</xsl:with-param>
<xsl:with-param name="fieldtitle">Created By</xsl:with-param>
<xsl:with-param name="displayname">Created By</xsl:with-param>
<xsl:with-param name="sortable">1</xsl:with-param>
<xsl:with-param name="fieldtype">x:string</xsl:with-param>
</xsl:call-template>
</li>
<li>
<xsl:call-template name="dvt.headerfield" ddwrt:atomic="1"
xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime">
<xsl:with-param name="fieldname">@Body</xsl:with-param>
<xsl:with-param name="fieldtitle">Body</xsl:with-param>
<xsl:with-param name="displayname">Body</xsl:with-param>
<xsl:with-param name="sortable">1</xsl:with-param>
<xsl:with-param name="fieldtype">x:string</xsl:with-param>
</xsl:call-template>
</li>
</tr>
<xsl:call-template name="dvt_1.body">
<xsl:with-param name="Rows" select="$Rows"/>
</xsl:call-template>
</ul></xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet> </Xsl>
</WebPartPages:DataFormWebPart>
解決 2
OK、SharePointが私に投げかけるものよりも簡単に頭を巻くことができるので、私はjQueryソリューションに頼りました!
すべてのリストにはクラスがあります ms-summarycustombody
私は次のことを得るために次のことを取得することができました table
に ul
var div = $("<div id='viewport' class='viewport'></div>");
var list = $("<ul id='announcementList'></ul>");
var listitem = null;
var p = null;
$('.ms-summarycustombody').each(function(i) {
$(this).find("tr").each(function(i) {
if (i % 3 == 0) {
listitem = $("<li/>");
list.append(listitem);
}
p = $("<p/>");
$(this).find("td").each(function(i) {
p.append("<span>" + $(this).html() + "</span>");
});
listitem.append(p);
});
div.append(list);
$(this).replaceWith(div);
});
その後、使用します jcarousellite アイテムをスクロールすることができました。
$('.viewport').jCarouselLite({
auto:5000,
speed:1000
});
他のヒント
Spservicesをチェックすることをお勧めします。これは、「SharePointのWebサービスを抽象化し、使いやすくするJQueryライブラリ」です。
考慮すべき別のオプションは、クライアントオブジェクトモデルとjavaScript ... ooops、no sp2007を使用して何かを構築することです。
あなたの質問を読んで正しい場合、あなたはすでに作業するために秩序のないリストを必要とするJavaScript Carouselを持っています。したがって、CQWPとXSLTを使用して、リストをフォーマットします。 XSLTがあまりにも挑戦的であるべきではないと思います。いくつかのデフォルトのXSLTを見ることから始めることができます。私のヒントは、XSLT「ID」変換を使用して、デフォルトのXSLTを見てこれを推測するのではなく、変換している入力XMLを見ることができるようにすることです。
サンプルXSLTアイデンティティ変換:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
それが役立つかどうかはわかりませんが、CQWPを使用してこれを行うソリューションを書きました。私はそれをコンテンツクエリティッカーWebパーツと呼びます:
http://www.novolocus.com/software/content-query-ticker-web-part/
興味深いかもしれません。