Sharepoint 2010 如何为VisualStudio中开发的列表定义指定自定义XSL?

Sharepoint 2010 如何为VisualStudio中开发的列表定义指定自定义XSL?,sharepoint-2010,contenttype,list-definition,Sharepoint 2010,Contenttype,List Definition,我正在尝试更改AllItems.aspx页面上的超链接,以指向我的文档库的自定义上载页面CustomUpload.aspx 假设我有两个文档库(列表)。一个名为vsList,在Visual Studio中创建并作为SharePoint解决方案的一部分进行部署,另一个名为sdList,以通常的方式从浏览器中创建 以下是我迄今为止成功完成的工作: 在基于web的编辑器中编辑sdList的AllItems.aspx页面。通过将工具栏类型设置为“摘要”,自定义包含“添加新项目”超链接的XsltListV

我正在尝试更改AllItems.aspx页面上的超链接,以指向我的文档库的自定义上载页面CustomUpload.aspx

假设我有两个文档库(列表)。一个名为vsList,在Visual Studio中创建并作为SharePoint解决方案的一部分进行部署,另一个名为sdList,以通常的方式从浏览器中创建

以下是我迄今为止成功完成的工作:

  • 在基于web的编辑器中编辑sdList的AllItems.aspx页面。通过将工具栏类型设置为“摘要”,自定义包含“添加新项目”超链接的XsltListViewWebPart。然后,使用SharePoint Designer(SPD),我在Designer视图中单击“添加新项目”超链接,出现右箭头,允许我编辑超链接选项(即,将该值设置为我自己的自定义URL)
  • 将上面的XSL代码复制并粘贴到vsList文档库的AllItems.aspx文件中,并确保url的路径是正确的,因为SharePoint当然永远找不到任何内容,因为“是”SharePoint的映射和虚拟目录太多
  • 选项1不是真正的解决方案,因为它只适用于通过SP portal中基于web的GUI编辑器直接创建的文档库。我需要在我在VS中创建的列表定义中定义所有这些。至于选项2,问题基本相同。如果我将自定义XSL复制并粘贴到AllItems.aspx页面,那么每次重新部署包含自定义列表定义的VS解决方案时,它都会被覆盖。因此,我真的需要一个解决方案,将允许我在我的VS列表定义自定义URL

    以下是应该起作用但不起作用的:

  • 创建一个自定义Xsl文件,其中包含覆盖默认“添加新项”链接所需的所有调整。使用Site Action=>Edit page=>Edit Web Part=>Miscellaneous=>XSL链接,编辑sdList文档库的AllItems.aspx页面中XsltListViewWebPart的XslLink属性
  • 编辑列表定义的Elements.xml文件,方法是添加必要的模块和文件xml标记,以指向将覆盖“addnewitem”URL的自定义XSL文件。无论我做什么,当我添加标记时,它都不会部署,因为它找不到自定义XSL文件 我试着把文件放在100个不同的地方,它一直在“Features[MY PROJECT NAME]\u PrimaryFeature\CustomStyle.xsl”中查找它。它从哪里知道我将文件存储在该路径/位置?即使我尝试将XSL文件存储在SharePoint mapped LAYOUTS/XSL目录或实际SharePoint站点中的样式库文档库中,它仍然找不到它。真让人恼火。路径、位置、目录结构和XSL已经成为我试图在SharePoint中完成任何事情的最大障碍


    请帮忙。

    所以我最后做的就是

    我在最初的尝试中基本上执行了上面的步骤1和步骤2,并将整个站点模板导出到工作站上的本地文件中。然后,我在VisualStudio中创建了一个新的SharePoint项目/解决方案(以免弄乱现有的SharePoint项目/解决方案),选择从现有网站模板导入数据,并仅选择要导入到新解决方案中的sdList

    导入过程完成后,我可以查看为AllItem.aspx生成的源代码(其中包含我使用SPD手动更新的XSL代码),然后将该代码复制到现有SharePoint解决方案中vsList的Schema.xml文件中

    在Schema.xml文件的View部分中,我在BaseViewID#1的标记(即AllItems.aspx视图)之后添加了标记,并将代码粘贴到了那里

    在理想情况下,我宁愿将所有Xsl代码转储到一个外部文件中,然后只使用标记,但我无法让它工作。由于某些原因,SharePoint无法找到该文件。这是我对SharePoint最恼火的地方之一(如我在原始帖子中所述):文件夹映射和文件位置。不必要的混乱

    对于那些感兴趣的人,这里是定制Xsl的样子。查找带有“CustomUpload.aspx”的行以及其前后的行。不幸的是,我不能在这个编辑器中加粗或突出显示代码部分,所以您必须自己做一些检查

    
    &载脂蛋白;
    /_layouts/CreateWebPage.aspx?列表=&;根文件夹=
    /_layouts/Upload.aspx?List=&;根文件夹=
    显示:无
    &;nbsp;
    ../../../\u布局/MyControls/CustomUpload.aspx?列表=
    if(类型(heroButtonWebPart)!=“未定义”)
    {
    if(eleHero!=null)
    eleHero.style.display=“”;
    }
    if(typeof(DefaultNewButtonWebPart)!=“未定义”)
    {