【问题标题】:Filtering duplicate column values from a custom table repeater in Kentico 10从 Kentico 10 中的自定义表重复器中过滤重复的列值
【发布时间】:2018-08-18 07:24:29
【问题描述】:

在 Kentico 10 中,我为员工目录创建了一个自定义表,其中包含姓名、职位、部门等列。

现在我想显示所有部门的列表。因此,我在我的页面中添加了一个自定义表转发器 Web 部件,将其数据源设置为我的自定义表,并分配了一个转换来呈现每行的部门列中的值。

这一切都按原样工作 - 但由于中继器会遍历表中的每一行,因此页面最终会显示多个重复的部门值。例如,如果表中有 10 位员工,其部门为“会计”,则“会计”输出 10 次,而我只想显示一次。

我如何修改它以便过滤掉重复的部门值,所以我只剩下 unique 部门的列表?我想我必须以某种方式使用过滤器 Web 部件,但 Kentico 文档仅提供了一个非常具体的示例,不适用于此场景。

【问题讨论】:

    标签: duplicates repeater web-parts kentico


    【解决方案1】:

    所以我以一种迂回的方式解决了这个问题,但它确实有效。

    我没有尝试过滤掉重复项,而是创建了第二个名为“部门”的自定义表,并将所有部门名称作为单独的项目输入。

    然后,我将 Web 部件中的数据源更改为指向 Departments 表而不是 Employee Directory 表。这给了我一个没有任何重复的部门列表。

    最后,我将Employee Directory表中Department字段(列)的数据源更改为从Department表中拉取数据的SQL查询:

    SELECT Department FROM customtable_Departments
    

    现在,当我在 Employee Directory 表中添加或编辑项目时,我可以从下拉菜单中选择部门,该菜单与 Department 表中的任何内容保持同步。

    【讨论】:

      【解决方案2】:

      这是一个渲染问题。您是否将结果呈现为表格,这里有一些想法:

      <script runat="server">
        string deparment = "";
      
        protected override void OnInit(EventArgs e) 
        {
          string previousValue = "";
          if (CMS.GlobalHelper.RequestStockHelper.Contains("department"))
          {
                  previousValue = CMS.GlobalHelper.RequestStockHelper.GetItem("department") as string;
          }
      
          string currentValue = Eval<string>("department");
          if (currentValue != PreviousValue) {
              deparment = currentValue;
              CMS.GlobalHelper.RequestStockHelper.SetValue("department", previousValue)
          }
        }
      </script>
      
      <table>
      <tr>
        <td><%# deparment %></td>
        <td><%# Eval("Employee") %></td>
      </tr>
      </table>
      

      【讨论】:

        猜你喜欢
        • 2020-10-29
        • 2018-07-10
        • 2015-09-12
        • 1970-01-01
        • 2014-09-29
        • 2016-08-21
        • 2018-01-02
        • 2013-11-28
        • 1970-01-01
        相关资源
        最近更新 更多