質問

新しいエキサイティングな外部コンテンツタイプ機能を使用して、外部LOBシステムからデータのリストを表示します。リストは潜在的に長いため、LOBシステム側でのフィルタリングを伴うページングが望ましいです。 http://msdn.microsoft.com/en-us/library/ee556392(office.14).aspx BCSにはページングの規定がある可能性があることを意味します(PageNumberフィルター)。しかし、ドキュメントはまだ不完全です。 これがサンプルです 検索クローラーのためのidenumeratorメソッドのページングを行う方法ですが、SPViewでのページングのサンプルはありません。 BCSページングの経験がある人はいますか?


  • BCSは、リスト内のアイテムの総数をどのように知ることができますか?
  • BCSは、ページングパラメーターをロブシステムにどのように渡しますか?
  • BCSサーバー側のページングとソートで作業を行う方法は?
役に立ちましたか?

解決

ありがとう、みんな、私はすでにBCSでページングとソートを作成しています。私の場合、BCSはWCFサービスで正常に動作します。最初は、フォロー契約でWebサービスを開発します。

[OperationContract]
IEnumerable<Employee> GetEmployeesPaged(int startRowNumber, int pageCount, string sortColumn, string sortDir);

次に、このすべてのパラメーターのフィルターを使用して、このWCF-Methodの読み取りリストメソッドを使用してBDC定義を作成しました。比較フィルターを作成しましたが、この場合はフィルタータイプには能力がありません。その後、この方法を表示して外部リストを作成しました。 SharePoint Designerでこのビューを開き、XSLTLISTVIEWWEBPARTに表示するためのいくつかのパラメーターを変更しました。

        <View Name="{50E1E936-0A3F-4096-84D2-FBDC194B4BAE}" DefaultView="TRUE" MobileView="TRUE" Type="HTML" DisplayName="Employee Read List Paged" Url="/Lists/Contracts/GetEmployeesPaged.aspx" Level="1" BaseViewID="1" ContentTypeID="0x" ImageUrl="/_layouts/images/generic.png">
            <Method Name="GetEmployeesPaged">
                <Filter Name="FilterRowNum" Value="{dvt_firstrow}"/>
                <Filter Name="FilterPageCount" Value="30"/>
                <Filter Name="FilterSortColumn" Value="{dvt_sortfield}"/>
                <Filter Name="FilterSortDir" Value="{dvt_sortdir}"/>
            </Method>
            <RowLimit Paged="TRUE">30</RowLimit>
            <Aggregations Value="Off"/>
        </View>

結局、私のWCFサービスはこのパラメーターで正常に動作し、サーバー側のページングとソートを可能にします。

このソリューションの特定のものは、BCSから取得されたアイテムのカウントが、[ページサイズ] +1の数のすべてのページで楕円形でなければならないことです。 「+1」は、「次のボタン」を追加するためにSharePointを作成しました。たとえば、4番目のページを取得する場合はBCSの121項目を取得する必要があり、ページサイズは30アイテムです

他のヒント

サードパーティのツールを忘れてください。 WCFサービスのSQLコールを変更し、SharePointデザイナーを介してBCSに組み込まれているフィルタリングを使用することにより、この非常に問題を処理することができました。ここでブログを書いています。

http://www.spcrew.com/blogs/lists/posts/post.aspx?id=47

これが基本的な手順です:

  1. WCFサービスにメソッドを作成して、一部のパラメーターを使用してデータベースを呼び出して行の制限を返します。
  2. SharePointデザイナーを使用して、WCFのリスト読み取り関数を作成します。enter image description hereフィルタータイプがページ番号であることを確認してくださいenter image description here
  3. SharePoint Designerでそのメソッドのフィルターを設定します。その方法のパラメーターとしてpageNumberフィルターを渡すようにしてください

public ienumerable getAllitemSpaged(int pagenum){}

  1. WCFメソッドでは、そのフィルターパラメーターを受け入れ、いくつかの計算を実行して、どのデータセットをクエリするかを決定します。あなたのSQLクエリは次のようなものになります:

string sqlquerystr = @"select * from(select row_number()over(order by orderdate)as rownum、 * Orderdate> = '1980-01-01')as RowconstrainedResult as Rownum> =" +((1000 * Pagenum ) + 1) + "およびrownum <" + upperlimit + "rownum" odry ";

したがって、基本的には、アイテムを一度に1000個rawっています。

  1. クロール。これをクロールすると、SharePointはこのメソッドを呼び出し、Pagenumを0としてこの方法に渡し、それを再び呼び出して「1」、次に「2」を渡します。

それが役立つことを願っています

これが、稲妻ツールのサーバーサイドページングサンプルです。

http://lightningtools.com/blog/archive/2010/06/25/sharepoint-2010-external-list-paging-ndash-server-side.aspx

.NET接続サンプルであるため、SQL Serverを含むバックエンドで動作させることができます。それは私たちが見つけることができる最高ですが、一度にページとは対照的にトップNをやっているので完璧ではありません。

フィルターが入力されているときに同じ「ReadList」メソッドが呼び出されているため、フィルターデータもページングされるため、フィルタリングに影響を与えることに注意してください。フォーム変数を検査することでこれを回避できますが、それは高級でハッキーなプロセスです。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top