首页 > 技术文章 > SHAREPOINT 2013 列表之间相互关联

AsprosL 2014-07-24 16:24 原文

 修改内容

1.增加列表设置,隐藏Aid字段操作

 

SharePoint 列表之间相互关联

例如两张列表之间的父子关系。

 

思路如下:

列表中新增列表项后会有一个唯一的ID,我们获取到该ID赋予子表即可将两张列表相互关联。

 

效果图如下:

实现起来也是很简单的。下面来动手实践下。

首先我们要定位到显示页面。也就是DispForm.aspx

因为只有显示页面和编辑页面才有会有列表项ID。新建页面是没有ID生成的。

 

新建两张列表。。。

 

注意:新建列表后,需要对列表进行设置,添加Aid栏(列),为了页面好看可以设置成隐藏。

点开列表设置=>高级设置=>启用内容管理

 

点击项目后进入内容类型

 

点击Aid栏(列)后如下图

页面设置基本到此结束。下面需要在spd里手动去操作一些东西。

 

打开SharePoint Designer(SPD) 找到父列表的显示页面

 

在webpart下新增一个按钮。

SPD13取消了视图。。。

但是我们可以用F12 去查看位置。

 

效果如下图:

添加JS.

这里的JS作用是获取当前URL 截取到ID 通过弹窗传到子表的新建页面。效果如下:

在子表的NewForm.aspx 页面 添加JS

JS根据当前URL截取到ID,然后赋予到子表的Aid字段。

整个新建逻辑做完后,我们需要考虑的是如何显示呢?

接下来我们回到父表的显示页面 DispForm.aspx 

在按钮下面插入 显示项目表单

 

然后我们可以发现SPD上多出了个数据视图工具

在选项下面,我们可以设置添加删除列,分页,等等。。。

到这一步的时候我们还需要把显示数据筛选一遍

 

我们新建一个参数,取名为Aid,参数源为查询字符串,查询字符串的变量为ID

然后我们发现在代码里面多出了一行

我们设置筛选条件

 

域名的Aid为 子表的新建字段Aid.

值为我们前面所建的参数Aid。即查询字符串ID

 

整个功能就完成了。

唯一的代码就是两段JS了

 

DispForm.aspx页面的JS

注意 URL为子表 新建项目的URL 加上我们要传过去的Aid

JS代码写的比较随意。。。

function show()
{
    var a=location.search;
    a = a.split("?");
    a = a[1].split("&");
    a =  a[0].split("=");
    //alert(a[1]);
    
    var options = {
                    url: "http://spserver/IT_center/Lists/B/NewForm.aspx?Source=http%3A%2F%2Fspserver%2FIT%5Fcenter%2FLists%2FB%2FAllItems%2Easpx&RootFolder=&Aid="+a[1],
                    width: 600,
                    height: 480,
                    title: "新增列"
                };
              SP.UI.ModalDialog.showModalDialog(options);
    
}

</script>

子表NewForm.aspx页面的JS

 

根据当前URL截取到ID

将ID值赋予到Aid字段。

<script type="text/javascript">

window.onload=function()//
{
    show();
}

function show()
{
    var a=location.search;
    a = a.split("&");
    a = a[2].split("=");
    
    document.getElementById("Aid_43bc1ca7-76dd-4ea6-ae50-da655f99d378_$TextField").value=a[1];
    document.getElementById("Aid_43bc1ca7-76dd-4ea6-ae50-da655f99d378_$TextField").disabled = true;
}

</script>

推荐阅读