在 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 列表的查找字段。
我想在房间中显示所有相关设备的简单表格显示形式。
我该如何实现?
好的,有很多实现这一目标的可能性。一些可能的和好看的解决方案可以是:
- 重载点击列表中的市场价值(可以使用 JSLink 完成)以打开一个列出所有设备的模态对话框页面(使用 REST 查询获取)
- 重载列表中市场价值的点击(可以使用 JSLink 完成)并重定向到同一页面,但使用过滤器到同一视图。
- 如果市场数量不多,也可以按市场创建视图(不太好,但会减少编码工作量)
如果您正在寻找其他东西,请告知。希望这对您有所帮助!
一般的解决方案如下
检查您是否可以使用 JavaScript 中的 REST API,如下所示。 (在此步骤中,您只需确保 URL 返回您请求的 XML 数据)
http://portal/_api/web/lists/getByTitle('Equipments')/items/?$select=Title,ID&$filter=Room eq 'room1'
使用 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);
});
为了使以前的代码正常工作,您可能会猜到您最好为新的 td 添加 id 以包含新的要求(例如,新的 tr 作为包含 aa 的最后一行 div使用 id='divEquipements' ) 数据,也只需将 id='TitleValue' 添加到包含房间标题的 td(通常是第一行)
我有 2 个列表,它们是 房间 和 设备。
在 Equipment 列表中有一个到 Room 列表的查找字段。
我想在房间中显示所有相关设备的简单表格显示形式。
我该如何实现?
好的,有很多实现这一目标的可能性。一些可能的和好看的解决方案可以是:
- 重载点击列表中的市场价值(可以使用 JSLink 完成)以打开一个列出所有设备的模态对话框页面(使用 REST 查询获取)
- 重载列表中市场价值的点击(可以使用 JSLink 完成)并重定向到同一页面,但使用过滤器到同一视图。
- 如果市场数量不多,也可以按市场创建视图(不太好,但会减少编码工作量)
如果您正在寻找其他东西,请告知。希望这对您有所帮助!
一般的解决方案如下
检查您是否可以使用 JavaScript 中的 REST API,如下所示。 (在此步骤中,您只需确保 URL 返回您请求的 XML 数据)
http://portal/_api/web/lists/getByTitle('Equipments')/items/?$select=Title,ID&$filter=Room eq 'room1'
使用 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); });
为了使以前的代码正常工作,您可能会猜到您最好为新的 td 添加 id 以包含新的要求(例如,新的 tr 作为包含 aa 的最后一行 div使用 id='divEquipements' ) 数据,也只需将 id='TitleValue' 添加到包含房间标题的 td(通常是第一行)