深入浅出SharePoint——包含关联字段列表模板使用问题

测试环境:

SharePoint2007和SharePoint2010。

应用场景

列表Province:用来存储省份信息。主要包含省份地段。

列表Region:用来存储地区信息。主要包含省份和辖属的地信息,其中省份字段信息来源来自列表Province的Title(即省份)字段。

一句话,两个列表是相关联的。

问题描述

我们在跟客户提供解决方案的时候,常常现在DEV环境开发和测试完毕后,然后迁移到PROD环境。为了提高迁移的效率,我们常常把列表存储为模板来达到重复使用和快速建站的目的。而在上述应用场景中,使用包含关联字段的列表模板创建列表,我们常常发现关联的字段的关联关系失效,常常需要删除并重新创建。

如下图所示:Get information from显示为空。真杯具!

原理剖析

1、*.stp模板文件是一个包含名称manifest.xml文件的cab包。

我们使用7-zip工具解压缩地区列表模板文件Region.stp后得到manifest.xml。使用记事本(Notepad)查看代码,发现Lookup字段使用目标SharePoint网站上要查阅的列表的GUID来定义List属性的,因为每次创建新的列表的时候会自动分配的唯一GUID。

2、列表使用唯一的GUID来标示。

解决办法

1、从站点A导出ProvinceA.stp和RegionA.stp。

2、先导入ProvinceA.stp到站点B,并使用ProvinceA.stp在站点B上创建新的列表Province。

3、导出站点B上列表Province的模板ProvinceB.stp,解压查看其GUID。

4、修改站点A中导出的列表模板RegionA.stp中Lookup字段定义的列表Province的GUID,设置其值为站点B中创建的Province列表的GUID。

5、使用makecab命令生成新的Region.stp,用来导入站点B中的list模板库来使用。

6、大功告成的,如心所料!

下文:后续我会专门整理个工具来处理SharePoint bug的工具集。

 

posted @ 2011-01-30 16:11  风影极光  阅读(2403)  评论(4编辑  收藏  举报