自定义SharePoint列表视图 - 我可以将其放入功能(WSP)吗?

时间:2009-05-05 14:40:11

标签: sharepoint list view solution

这是我的情况:

我在SharePoint 2007 Enterprise中工作,我有一项功能可以在部署和激活它时为我创建一个列表。到目前为止,我通常的工作流程是部署解决方案,激活它,然后打开SharePoint Designer来自定义列表。

我的自定义通常非常复杂,但我会保持简单。在这种情况下,让我们说我编辑AllItems.aspx,将数据视图转换为XSLT数据视图,然后我添加一个静态文本列。

我使用了一些不同的工具(SPSource,VSeWSS,SharePoint Manager,OCDExportList等)来提取我的自定义schema.xml和所有默认视图,但我还没有找到任何运气来确定AllItems.aspx的代码现在已经过定制。

当我提取(使用上述任何工具)时,AllItems.aspx与默认值没有区别。 schema.xml中的<View>元素减少为一行,例如:

<View DefaultView="TRUE" 
      MobileView="TRUE" 
      MobileDefaultView="TRUE" 
      Type="HTML" 
      FPModified="TRUE" 
      DisplayName="All Documents" 
      Url="Forms/AllItems.aspx" 
      Level="1" 
      ContentTypeID="0x" />

我真的被困在这里......我不知道该怎么做。它甚至可能吗?如果我可以在我的功能中包含我的自定义设置,它将为我节省大量时间(和文档)。

如果有任何其他信息我错过了会有所帮助,请告诉我......谢谢!


最新调查结果

过去几个小时我发现了一些。如果我将列表保存为列表模板,则将.stp文件本地保存为.cab文件,我可以提取其内容。其中一个文件是manifest.xml,其中包含schema.xml以及其他一些部分。

其中一个部分是<webparts>部分,每个视图都有<webpart>。每个<webpart>元素都包含一个非常长的字符串......不知道这些字符实际代表什么。

重要的是,我认为任何自定义视图实际上都必须是Web部件,如果部署为解决方案的一部分......但我并不积极。

3 个答案:

答案 0 :(得分:1)

我前一段时间遇到过类似的问题。我必须创建一个非常自定义的视图,我不得不完全放弃ListFormWebPart,并创建了自己的webpart来呈现数据。

通常,在SPDesigner中自定义aspx文件时,所有更改都将在aspx文件中。在SPDesigner中打开它,您将看到所做的所有更改。转换为XSL数据视图后,标准的ListFormWebPart将替换为DataFormWebPart,它不关心schema.xml中指定的<View>标记;在aspx文件中查找ListFormWebPart。

为什么不在列表中进行所需的所有自定义,将列表另存为模板(它将包含关联的AllItems.aspx),然后在您的功能中使用该模板来创建列表?您可以从代码中添加extracolumn(如果它是动态的,不能包含在模板中),依此类推。

答案 1 :(得分:1)

是的,你可以。从Codeplex获取Sharepoint管理器工具 http://spm.codeplex.com/

将其安装在服务器场中的计算机上,它允许您通过显示所有对象的树视图浏览服务器场。

通过Sharepoint GUI创建列表,然后使用SPM浏览到它。

SPM将允许您提取描述列表视图的MOSS / WSS创建的xml(它显示在左侧属性网格中),然后您可以将其放入manifest.xml

答案 2 :(得分:0)

我有类似的问题,并且已经对此进行了大量研究。对我来说,dataview web部分是Sharepoint中最强大的组件之一。不幸的是,我必须提供我的解决方案作为.wsp包,这意味着我不能只是创建该网站并在该网站上使用Designer。我采取了两步的方法,我使用设计器来创建我的数据视图,我还编辑了该数据视图的代码,将ListID和Guids替换为ListName和实际的列表名称。这允许在任何页面/站点中导出和使用它,只要列表名称相同即可。我正在我的解决方案中创建一个webpart页面文档库,我相信我可以使用onet.xml文件将包含webparts的页面添加到此库中。我会尽快得到该测试的结果。