1

我有 2 个列表,它们是RoomEquipment

设备列表中有一个房间列表的查找字段。

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

我应该如何实现这一目标?

4

2 回答 2

0

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

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

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

于 2015-08-03T06:11:14.530 回答
0

一般解决方案如下

  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 作为最后一行,其中包含 id='divEquipements' 的 aa div)数据,并且只需添加 id= 'TitleValue' 到包含房间标题的 td(通常是第一行)

于 2015-09-14T05:56:15.847 回答