在 SharePoint 2013 的查找字段的显示表单中显示具有相同查找字段的所有项目的列表

Displaying list of all items with the same lookup fields in Display Form of that Lookup field in SharePoint 2013

我有 2 个列表,它们是 房间设备

Equipment 列表中有一个到 Room 列表的查找字段。

我想在房间中显示所有相关设备的简单表格显示形式。

我该如何实现?

好的,有很多实现这一目标的可能性。一些可能的和好看的解决方案可以是:

  1. 重载点击列表中的市场价值(可以使用 JSLink 完成)以打开一个列出所有设备的模态对话框页面(使用 REST 查询获取)
  2. 重载列表中市场价值的点击(可以使用 JSLink 完成)并重定向到同一页面,但使用过滤器到同一视图。
  3. 如果市场数量不多,也可以按市场创建视图(不太好,但会减少编码工作量)

如果您正在寻找其他东西,请告知。希望这对您有所帮助!

一般的解决方案如下

  1. 检查您是否可以使用 JavaScript 中的 REST API,如下所示。 (在此步骤中,您只需确保 URL 返回您请求的 XML 数据)

    http://portal/_api/web/lists/getByTitle('Equipments')/items/?$select=Title,ID&$filter=Room eq 'room1'
    
  2. 使用 SharePoint Designer 创建一个新的自定义 DisplayForm 并添加以下 jQuery 脚本以读取并生成之前在

    末尾获取的数据
    <script src="/_layouts/15/CDN/Js/jquery-1.11.1.min.js" type="text/javascript" >  </script>
    
    <script type="text/javascript" >
    
    function LoadEquipments(roomValue) {
        $.ajax({
            url : _spPageContextInfo.webServerRelativeUrl + "/_api/web/lists/getByTitle('Equipments')/items/" +
            "?$select=Title,ID" +
            "&$filter=Room eq '" + roomValue + "'",
    
            type : "GET",
            headers : {
                "accept" : "application/json;odata=verbose",
            },
            success : function (data) {
    
                var equipments = [];
                var results = data.d.results;
                for (var i = 0; i < results.length; i++) {
    
                    if (equipments.indexOf(results[i].Title) < 0)
                        equipments.push(results[i].Title);
                }
    
                var ullist = $('<ul/>');
    
                for (var i = 0; i < equipments.length; i++)
                    $('<li/>').val(equipments[i]).html(equipments[i]).appendTo(ullist);
    
                ullist.appendTo('#divEquipements'); 
                $("#divEquipements ul li").css("font-size", "16px").css("color", "salmon");
    
            },
            error : function (err) {
                alert(JSON.stringify(err));
            }
        });
    }
    
    $(document).ready(function () { 
        var roomVal = $("#TitleValue").text(); 
        LoadEquipments(roomVal); 
    });
    
  3. 为了使以前的代码正常工作,您可能会猜到您最好为新的 td 添加 id 以包含新的要求(例如,新的 tr 作为包含 aa 的最后一行 div使用 id='divEquipements' ) 数据,也只需将 id='TitleValue' 添加到包含房间标题的 td(通常是第一行)