如何创建可重复使用的自定义新项目表格+最好,我不想将此表单与内容类型绑定?我想强制渲染一个隐藏字段(它可以在页面上渲染,但在页面上显示不可见或渲染并显示)并以编程方式设置字段值(这就是为什么必须渲染它 - 设置它的值)。
Google提供了大量关于如何使用sharepoint设计器创建自定义列表表单的信息,但就我而言,我不希望sharepoint designer获得您在下面看到的优势。
我希望能够创建一个自定义的newform来创建项目(我不希望它是默认的)。要打开这个newForm,我会在item的ECB菜单中使用CustomAction。在这种形式中,我想强制渲染一个隐藏字段并以编程方式设置它的值。
我想从CustomAction ECB(项目的上下文菜单)打开此表单,所以我不想将其设置为内容类型的默认新表单模板。
<XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
<FormTemplates xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
<New>ListForm</New>
</FormTemplates>
</XmlDocument>
我可以创建自定义RenderingTemplate并将Content type的新表单模板设置为我新创建的模板。
例如,OOTB ListForm呈现模板:
<SharePoint:RenderingTemplate ID="ListForm" runat="server">
<Template>
<SPAN id='part1'>
<SharePoint:InformationBar runat="server"/>
<wssuc:ToolBar CssClass="ms-formtoolbar" id="toolBarTbltop" RightButtonSeparator=" " runat="server">
<Template_RightButtons>
<SharePoint:NextPageButton runat="server"/>
<SharePoint:SaveButton runat="server"/>
<SharePoint:GoBackButton runat="server"/>
</Template_RightButtons>
</wssuc:ToolBar>
<SharePoint:FormToolBar runat="server"/>
<TABLE class="ms-formtable" style="margin-top: 8px;" border=0 cellpadding=0 cellspacing=0 width=100%>
<SharePoint:ChangeContentType runat="server"/>
<SharePoint:FolderFormFields runat="server"/>
<SharePoint:ListFieldIterator runat="server" />
<SharePoint:ApprovalStatus runat="server"/>
<SharePoint:FormComponent TemplateName="AttachmentRows" runat="server"/>
</TABLE>
<table cellpadding=0 cellspacing=0 width=100%><tr><td class="ms-formline"><IMG SRC="/_layouts/images/blank.gif" width=1 height=1 alt=""></td></tr></table>
<TABLE cellpadding=0 cellspacing=0 width=100% style="padding-top: 7px"><tr><td width=100%>
<SharePoint:ItemHiddenVersion runat="server"/>
<SharePoint:ParentInformationField runat="server"/>
<SharePoint:InitContentType runat="server"/>
<wssuc:ToolBar CssClass="ms-formtoolbar" id="toolBarTbl" RightButtonSeparator=" " runat="server">
<Template_Buttons>
<SharePoint:CreatedModifiedInfo runat="server"/>
</Template_Buttons>
<Template_RightButtons>
<SharePoint:SaveButton runat="server"/>
<SharePoint:GoBackButton runat="server"/>
</Template_RightButtons>
</wssuc:ToolBar>
</td></tr></TABLE>
</SPAN>
<SharePoint:AttachmentUpload runat="server"/>
</Template>
</SharePoint:RenderingTemplate>
我只需要这么小的改动(将内置ListFieldIterator改为自定义ListFieldIterator):
<SharePoint:RenderingTemplate ID="NewRelatedListItemTemplate" runat="server">
...
<Balticovo:ListFieldIteratorExtended IncludeFields="RelatedItems" runat="server"/>
...
</SharePoint:RenderingTemplate>
我可以在运行时修改现有的RenderingTemplate吗?
SPControlTemplateManager.GetTemplateByName("ListForm")
TemplateName="ListItemFormFieldsWithRelatedItems"
简而言之,我想在运行时以编程方式创建RenderingTemplate,然后使用此模板呈现列表的新表单。
现在,这是(想法#2)可能......?