没有EntityTitle的2sxc关系过滤器

时间:2016-09-25 22:15:14

标签: 2sxc

我想使用关系过滤器来过滤标签。当我传递文本字符串并且它可以搜索EntityTitle时,这可以正常工作,但是我想将entity_id传递给过滤器。

我在查询结果的细节中注意到关系过滤器有一个" CompareAttribute = EntityTitle"。有没有办法编辑它以使其成为EntityID?

感谢。

2 个答案:

答案 0 :(得分:0)

目前,相关项目中不同属性的过滤只能在代码中完成。继承人'如何

  1. 像您一样创建视觉查询,唯一的“错误”是错误的字段
  2. 在您的剃刀模板中
  3. ,使用var q = App.Query["queryname"];
  4. 访问查询
  5. 然后之前获取数据,更改CompareAttribute。这需要稍微考虑一下,因为您必须将之前的q转换为IDataTarget并向上导航查询树,如var relFilter = q.In["Default"].Source,然后再将其转换为右侧键入,然后更改relFilter.CompareAttribute = "Country";
  6. ......类似的东西:)

    之后,您可以使用foreach(var x in AsDynamic(q["Default"])) {...}

    访问查询结果

答案 1 :(得分:0)

我尝试过此操作,因为我想要一些按地区分组的位置, 所以我做到了:

  • 区域1
    • 地址1
    • 地址2
  • 第2区
    • 地址3
    • 地址4

因此,基本上它应该执行相同的操作,只是会按区域查询。 这就是我想出的:

@{
    var someAddresses = App.Query["FilterAddresses"]["ListContent"];
    someAddresses.Filter = region.RegionName;
    Data.In.Add("someAddresses", someAddresses["Default"]);
}
@foreach (var pc in AsDynamic(someAddresses.List)) {
    <li>@pc.Naam</li>
}

但是它说:

  

CS1061:ToSic.Eav.DataSources.IDataStream不包含“过滤器”的定义。

那还应该是其他东西吗?