2017-04-19 19 views
0

標準のDNN 'Files'テーブルから特定の拡張子のすべてのドキュメントを取得するSQLデータソースの設定がありますが、表示するファイルのカテゴリそれについて最善の方法。私は同期済みの場合はページ設定され(上のDNNタグをユーザが選択できるようになるようにDNNのタブ/ページ分類タグ/カテゴリーで2sxcカテゴリーエンティティを同期したい2sxc | SQLデータソース - LINQフィルタクエリ

@using ToSic.Eav.DataSources 
@functions 
{ 
    // Default data initialization - should be the place to write data-retrieval code 
    // In the future when routing & pipelines are fully implemented, this will usually be an external configuration-only system 
    // For now, it's done in a normal event, which is automatically called by the razor host in 2SexyContent 
    public override void CustomizeData() 
    { 
     var source = CreateSource<SqlDataSource>(); 
     // source.TitleField = "EntityTitle"; // not necessary, default 
     // source.EntityIdField = "EntityId"; // not necessary, default 
     // source.ConnectionString = "..."; // not necessary, we're using the ConnectionStringName on the next line 
     source.ConnectionStringName = Content.ConnectionName; 

    // Special note: I'm not selecting * from the DB, because I'm activating JSON and want to be sure that no secret data goes out 
    source.SelectCommand = "Select Top 10 FileId as EntityId, FileName as EntityTitle, PublishedVersion, UniqueId, FileName, Size as Size, Extension as Extension, CreatedOnDate as Date, Folder as Folder FROM Files WHERE PortalId = @PortalId AND Extension = 'docx' OR Extension = 'xlsx' OR Extension = 'pdf'"; 
    source.Configuration.Add("@PortalId", Dnn.Portal.PortalId.ToString()); 
    Data.In.Add("FileList", source.Out["Default"]); 

    // enable publishing 
    Data.Publish.Enabled = true; 
    Data.Publish.Streams = "Default,FileList"; 
    } 
} 

:以下の私の現在のSQLデータソースコードを参照してください。 2sxcカテゴリエンティティ)を使用すると、taxonomy_termsテーブルをコンテンツアイテムテーブルに結合することによって接続するSQLデータソースに基づいて、アプリケーションに特定のdoc/excel/pdfファイル(2sxc iCache経由で2sxcカテゴリに既に接続されている)を割り当てることができます次にDNNタブテーブルに接続するコンテンツアイテムタグテーブルを使用します。

LINQ/Razorコードを修正して、「サービス」カテゴリが割り当てられているファイルのみを表示するようにカテゴリをフィルタする方法を教えてください。このフィルタを使用してDNNタクソノミー用語「サービス」を使用して2sxcカテゴリ(既に2sxc iCache経由でアップロードされたAdamファイルをアップロードしている)にリンクしたいタクソノミタグ「サービス」(完全一致)を同期させますか?

@foreach (var file in AsDynamic(Data.In["FileList"]).Where(i => 
     (i.Category as List<dynamic>).Any(c => c.EntityId == FileList.EntityId))) 
     { 
      <li>@file.FileName</li> 
     } 

私はhttps://github.com/2sic/2sxc/wiki/DotNet-Query-Linq上のwikiノートを詳細に見ていると私はSQLデータソーステンプレートを使用してのforeachを使用して、カテゴリフィルタの正しい構文を得ることにこだわっています。

乾杯...

答えて

0

はい:

@using ToSic.SexyContent 

    @{ 
    // all QandA items 
    var all = AsDynamic(App.Data["QandA"].List); 

    // the filter value, can be set in template 
    // but usually you would either get it from url with Request["urlparam"] 
    // or from a setting in the view, using Content.Category 
    var currentCat = "Business"; 

    // filter, find any which have the current category 
    var filtered = all 

    .Where(p => (p.Categories as List<DynamicEntity>).Any(c => AsDynamic(c).Name == currentCat)); 

} 

<div class="clearfix"> 
     @foreach (var q in filtered) 
     { 
      <div class="sc-element" data-tags="@String.Join(",", ((List<DynamicEntity>)q.Categories).Select(a => AsDynamic(a).EntityId))"> 

       @Edit.Toolbar(Content) 

       <div class="col-md-12"> 
        <div class=""> 
         <a href="@q.Link" class=""> 
          <span class="">@q.Link</span> 
         </a> 
         <p>@q.Title</p> 
        </div> 
       </div> 
      </div> 
     } 
</div> 

おかげで再び!

1

私はすでにこれをメールで解決していると思います。

小さな推奨事項:SqlDataSourceの代わりにDnnSqlDataSourceを使用する場合は、現在のDNNに正しい接続文字列が既にあります。あなたは以下にように私は必要なフィルタだった、またhttp://2sxc.org/en/docs/Feature/feature/4670を参照してくださいだけでなく、https://github.com/2sic/2sxc/wiki/DotNet-DataSources-All

+0

私はDnnSqlDataSourceをさらに詳しく見ていきます。 – denisjoconnor

関連する問題