在Sharepoint的實際運用中會經常使用到父子表來建立2個表之間的關系。通常父表為表頭,存儲公共的數據項目,子表存儲細分的項目。
例如通過下面2個表實現圖書借閱功能,表1為圖書的基礎信息,表2為圖書的借閱記錄,采用查閱字段調用表一的圖書數據。
1、先建一個自定表,字段如表1所示。
表1 圖書表

2、再建個自定義表,增加查閱字段


表2 圖書借閱記錄字段如下

3、打開建好的表一,新建一條記錄,如下所示

4、選擇列表的數據,點擊菜單上的“自定義表單”,調用Infopath2010對表單進行定制.

調整后的表單如下

圖書編號希望采用自動編號功能,編號規則 TS+4位年號+3位序號。序號采用列表ID。增加數據源,采用圖書表作為數據源。
圖書編號的屬性里增加公式如下,ID為插入輔助數據源的域“ID”。預覽一下,可以正常顯示了。

5、回到表1圖書表的列表,選擇上面菜單“表單web部件”,選擇“顯示窗體”。

選擇添加web部件,如下所示,添加圖書借閱記錄表。

建立2表的連接,點擊web部件右上角的小三角,數據發送對象,選擇圖書借閱記錄,配置連接

完成后選擇右上角的停止編輯。點擊表一 圖書表的列表項目,可以看到效果如下。點擊添加記錄,可以增加借閱記錄。

6、此方法添加項目,需要手動選擇主表的編號,不太方便而且容易出錯。下面對表2進行如下改造。用Infopath編輯表2的表單,新建一個字段ID1,用於存儲主表ID。
ID1增加一條規則,當ID1不為空時,設置圖書編號=ID1

圖書編號 增加一條格式規則。當圖書編號不為空時,禁用此控件。
7、上傳表單到服務器后,進入表2 的表單web部件,(項目)新窗體。向窗體web部件增加一個查詢字段URL篩選器


配置篩選器,篩選字段填寫 ID1,停止編輯。配置篩選器web的連接,選擇ID1

8、測試一下 ,瀏覽器填寫表2的新建項目的連接地址 newifs.aspx?ID1=1 ,實現了通過URL傳遞參數,效果如下。

9、回到表1,打開表1的表單web部件,顯示窗體,添加web部件,選擇內容編輯器,編輯HEML源代碼。

添加以下jqurey代碼,由於本例采用jqurey,需要集成到Sharepoint內,可參考以下方法集成。
http://www.cnblogs.com/Sunmoonfire/archive/2012/07/27/2612510.html
代碼如下,獲取表1的ID,生成表2的帶傳遞ID參數的地址。
<script type="text/jscript"> function test() { var tt=document.aspnetForm.attributes["action"].value; var arr=new Array(); arr=tt.split('&'); var ID1=arr[1].substring(3,10); var url1 = "http://列表地址/Item/newifs.aspx?ID1="+ ID1; return url1; } function openModalDialog() { var UURL=test(); NewItem2(event,UURL); }</script>
10、用 SharePoint Designer 2010 編輯表1的項目顯示窗體

點擊添加新項目

點擊下面的標記的小三角,編輯標記

粘貼下面的代碼
<a class="ms-addnew" href="#" onclick="javascript:openModalDialog();javascript:return false;" target="_self">
保存后退出SPD。至此,大功告成。
先填寫表一,填寫后,打開表一的項目,添加新項目,添加子表項目。
效果如下

