【问题标题】:Tweaking out of the box SharePoint 2013 forms调整开箱即用的 SharePoint 2013 表单
【发布时间】:2015-11-04 01:05:16
【问题描述】:

我有以下情况。我们正在为我们的公司建立一个新的 Intranet,作为一个慈善机构,实现 AA 可访问性是必须的。我是一名 SharePoint 开发人员,我们从第三方公司获得设计。也就是说,设计师以一种几乎完全不记得 SharePoint 的方式制作了自定义设计,就像是完全不同的设计之间的一种混合,就像它是一个发布网站,同时,这个想法是作为尽可能多的开箱即用的功能。

这意味着如果我创建一个列表,所有的外观和感觉都将是定制的,而功能必须保留。所以我会得到一个列表的设置页面,它的功能应该保持不变,但设计应该是新的设计。自定义列表(自定义但在 SharePoint 中创建)将有一个新的、编辑和显示的表单,它应该是开箱即用的......但具有新的设计。

问题在于这种开箱即用的形式。该设计使用 div 来显示链接到自定义列表的每一列的所有 HTML 控件。不幸的是,SharePoint 2013 开箱即用的列表表单使用 HTML 表格将字段制成表格。

显然这篇文章有 30000 个字符的限制,所以我不能从开箱即用的表单中粘贴代码来显示表格,但我所做的是创建一个包含每个示例的表单SharePoint 中可能的字段,然后查看我到达那里的表格数量。而且我无法添加屏幕截图,因为我需要 10 声望...

我在以前的项目中使用控制适配器删除了 SharePoint webparts 中的表格,顺便说一下,我也在这个网站中使用。但我正在努力解决如何在表单中更改这些 HTML 表格。我尝试以与 Webpart 区域相同的方式呈现表单,但它的工作方式不同。

这里有用于 webpart 区域的控制适配器的代码:

public class WebpartControlAdapter : System.Web.UI.Adapters.ControlAdapter
{
    protected override void Render(HtmlTextWriter writer)
    {
        var wpz = Control as Microsoft.SharePoint.WebPartPages.WebPartZone;

        if (wpz != null)
        {
            WebPartCollection wpColl = new WebPartCollection(wpz.WebParts);

            foreach (System.Web.UI.WebControls.WebParts.WebPart wp in wpColl)
            {
                wp.RenderControl(writer);
            }
        }
    }
}

我在此基础上尝试过的内容基本上完全破坏了我的页面:

public class PageControlAdapter : System.Web.UI.Adapters.PageAdapter
{
    protected override void Render(HtmlTextWriter writer)
    {
        var currentPage = Control as Page;

        if (currentPage != null)
        {
            System.Web.UI.HtmlControls.HtmlForm form = new System.Web.UI.HtmlControls.HtmlForm();

            form = currentPage.Form;

            form.RenderControl(writer);
        }
    }
}

所以我的问题是是否有人有解决方案或方法来实现这一点。

感谢您提供任何可能的帮助。

P.D.:在您提出之前,更改来自 SharePoint 的 OOTB 的 .aspx 文件不是一种选择,因为我们将其他 Web 应用程序保存在同一个场中,并且在那里进行更改会引发所有其他网站的更改。

【问题讨论】:

    标签: html forms sharepoint


    【解决方案1】:

    我不确定您要完成什么。 如果您正在创建完全自定义的列表并且想要一个完全不同的新建、显示和编辑表单,那么您可以定义要在 contentType 中使用的表单: https://msdn.microsoft.com/en-us/library/office/aa543825.aspx

    例子:

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
      <!-- Parent ContentType: Workflow Task (0x010801) -->
      <ContentType ID="0x010100AF4E4BE6CF8048959C4172F4298CE42A"
                   Name="MyName"
                   Group="MyGroup"
                   Description="MyDescription"
                   Version="0">
        <FieldRefs>
        </FieldRefs>
        <XmlDocuments>
          <XmlDocument NamespaceURI ="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
            <FormUrls xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
              <New>_layouts/MyFolder/New.aspx</New>
              <Display>_layouts/MyFolder/New.aspx</Display>
              <Edit>_layouts/MyFolder/Edit.aspx</Edit>
            </FormUrls>
          </XmlDocument>
        </XmlDocuments>
      </ContentType>
    </Elements>
    

    在你后面的代码中获取当前项目:

    SPListItem item = SPContext.Current.ListItem;
    

    其他可能性是在 NewFrom、DisplayForm 和 EditForm 上添加脚本编辑器 webpart。在脚本中使用 jquery 来改变字段的外观。 要自动填充 scriptEditorWebparts,您可以在 ListAdded 事件上触发事件处理程序

    【讨论】:

    • 首先感谢您的回复。如果我只关注一个自定义列表,您的建议可能是有效的。这里的问题是我需要为每个自定义列表创建一个新的/编辑/显示表单。我正在寻找一种解决方案来摆脱这些表并将它们转换为所有列表的 div(这就是我提供的 ControlAdapter 正在做的事情),这是一个永久性的变化。不管我是明天、下周还是下个月创建一个新列表。
    • ControlAdapter 始终有效,适用于您拥有的每个页面以及您将拥有的每个页面,无需一遍又一遍地重复步骤。在更改自定义列表表单的情况下,我每次创建新列表时都需要这样做,这无济于事,因为用户可能会创建自己的列表,我需要查找和修改每个列表他们可能会创造。我不想要新表单,我希望 SharePoint 处理 CRUD,与 OOTB 相同,只是应用稍微不同的 HTML,将自动生成的表格更改为其他内容,最有可能是 div。
    • 那么我发布的第二个解决方案呢:其他可能性是在 NewFrom、DisplayForm 和 EditForm 上添加脚本编辑器 webpart。在脚本中使用 jquery 来改变字段的外观。要自动填充 scriptEditorWebparts,您可以在 ListAdded 事件上触发 eventhandler
    • 或添加 jquery 脚本以更改母版页布局上的字段外观
    • 这里你可以找到 jquery 来替换表格到 div stackoverflow.com/questions/9229856/…
    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 2013-08-29
    相关资源
    最近更新 更多