对2sxc adam文件进行排序

时间:2016-05-30 04:34:45

标签: dotnetnuke-module 2sxc

我可以通过这种方式获得图像:

foreach (var pic in AsAdam(Content, "Images").Files)

1.按名称或上传日期对图像进行排序的正确方法是什么?

2.如何自定义重新排序图像?

3 个答案:

答案 0 :(得分:2)

“文件夹”本身不提供订购。我有两个建议

  1. 执行文件具有前导编号的操作 - 输出中未显示。这就是我在app-catalog上所做的,所以每个文件都有一个“31输出编辑” - 我可以在批量上传之前在本地系统中对它们进行预先排序

  2. 由于每个文件都可以包含元数据,因此您可以向元数据添加优先级或排序字段,并使用该字段进行排序。

  3. 您也可以随时按文件信息(如日期)对对象进行排序 - 这使用DNN FileInfo对象

答案 1 :(得分:2)

要对元数据字段进行排序,我使用了以下代码:

var filesAll = AsDynamic(AsAdam(Content, "Images").Files) as IEnumerable<dynamic>;
var filesWithMetadata = filesAll.Where(x=>x.HasMetadata).Where(x=>x.Metadata.Enabled).OrderBy(x=>x.Metadata.Sort);
var files = filesWithMetadata.Concat(filesAll.Where(x=>!x.HasMetadata));
}
@foreach(var pic in files){
 <div style="clear: both">
  <img src="@pic.Url?w=200&h=200&mode=crop" title="@pic.FileName" style="float: right">
  <h3>@pic.Metadata.Title</h3>
  Has Meta: @pic.HasMetadata 
  <div>Description: @Html.Raw(pic.Metadata.Description)</div>
 </div>
}

答案 2 :(得分:0)

只是针对2sxc v8.7(不确定其他版本)的任何有此问题的人的更新,我不得不删除一行的.Where(x =&gt; x.Metadata.Enabled)部分为了摆脱它失败每次我添加任何元数据到特定集合中的任何照片,不知道为什么是这种情况,但它仍然似乎没有那件作品。

此外,如果人们不清楚,.OrderBy(x =&gt; x.Metadata.Sort意味着它正在寻找你定义的一个名为&#34;排序&#34;的元数据,如果你调用元数据您定义了其他内容(如SortOrder,定义为数字),然后只需将该语句更改为您使用的元数据的名称(例如.OrderBy(x =&gt; x.Metadata.SortOrder)。

感谢发布此问题和解决方案,这是一个很大的帮助。