Criando modelos de formulário personalizado

Os modelos controle ASP.NET que são definidos no \12\TEMPLATE\CONTROLTEMPLATES\DefaultTemplates.ascx determinam o layout dos formulários item da lista Windows SharePoint Services. These templates can nest controls that in turn use more control templates for form layout definition. The controls can contain HTML markup and Web controls, but not data-bound statements involving <%#...%> syntax. Para substituir um modelo de controle usar como padrão globalmente em um servidor Web de front-end, você pode adicionar um personalizado arquivo .ascx para o Diretório \CONTROLTEMPLATES com um modelo de controle identificação que corresponda a identificação do existente no DefaultTemplates.ascx.

Criando modelos personalizados

Em adição para substituindo modelos usar como padrão, você pode criar seu próprios personalizado forma modelos e referir a eles pelo tipo lista ou tipo de conteúdo. To register a custom form template by list type, specify the name of the form template through the Template attribute on a <Form> tag in the Schema.xml file of the list definition. Por exemplo:

                    <Forms>
  <Form Type="DisplayForm" Url="DispForm.aspx" SetupPath="pages\form.aspx" WebPartZoneID="Main" /> 
  <Form Type="EditForm" Url="EditForm.aspx" SetupPath="pages\form.aspx" Template="MyCustomForm" WebPartZoneID="Main" /> 
  <Form Type="NewForm" Url="NewForm.aspx" SetupPath="pages\form.aspx" Template="MyCustomForm" WebPartZoneID="Main" /> 
</Forms>

To register a custom form template by content type, add a definition such as the following as a child of the <ContentType> tag in your Elements.xml file for the Feature.

                    <XmlDocuments>
  <XmlDocument NamespaceURI="https://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
    <FormTemplates  xmlns="https://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
      <Display>MyCustomForm</Display>
      <Edit>MyCustomForm</Edit>
      <New>MyCustomForm</New>
    </FormTemplates>
  </XmlDocument>
</XmlDocuments>

Os exemplos anteriores, "MyCustomForm" é a identificação de um personalizado que você está adicionando ao Diretório \CONTROLTEMPLATES modelo de controle.

Estrutura de modelo

Modelos controle ASCX-Based reunir múltiplo controles em uma estrutura aninhada, onde os controles próprios consistem de modelos e podem ser usado para estender com formulários item da lista.

O modelo forma biblioteca documento que está definido no \12\TEMPLATE\CONTROLTEMPLATES fornece um bom exemplo de uma estrutura modelo de controle. O seguinte exemplo mostra o modelo de controle usar como padrão definidos para a forma biblioteca documento.

                    <SharePoint:RenderingTemplate ID="DocumentLibraryForm" runat="server">
  <Template>
    <SharePoint:InformationBar runat="server"/>
      <wssuc:ToolBar CssClass="ms-formtoolbar" id="toolBarTbltop" RightButtonSeparator="&nbsp;" runat="server">
        <Template_RightButtons>
          <SharePoint:SaveButton runat="server"/>
          <SharePoint:GoBackButton runat="server"/>
        </Template_RightButtons>
      </wssuc:ToolBar>
    <SharePoint:FormToolBar runat="server"/>
    <SharePoint:FormComponent Templatename="DocumentLibraryFormCore" runat="server"/>
  </Template>
</SharePoint:RenderingTemplate>

Neste exemplo, o modelo forma biblioteca documento desenha juntos vários componentes para dispor o completo modelo forma. Muitos desses componentes derivar de classe base o Microsoft.SharePoint.WebControls.FormComponent T:Microsoft.SharePoint.WebControls.FormComponent, quais si mesmo deriva de Microsoft.SharePoint.WebControls.TemplateBaseControl e significa que os componentes podem próprios ser transformado em modelos.

No entanto, a maioria da forma realmente é processado por um separar modelo que está definido no DefaultTemplates.ascx cuja identificação é DocumentLibraryFormCore. Este modelo mais é composto de vários componentes, incluindo alguns estrutura HTML Table-Based para ajudá-lo a organizar o layout página, como mostra este exemplo:

                    <SharePoint:RenderingTemplate ID="DocumentLibraryFormCore" runat="server">
  <Template>
    <TABLE class="ms-formtable" style="margin-top: 8px;" border=0 cellpadding=0 id="formTbl" cellspacing=0 width=100%>
      <SharePoint:ChangeContentType runat="server"/>
      <SharePoint:DocumentLibraryFields runat="server"/>
      <SharePoint:ApprovalStatus runat="server"/>
    </TABLE>

    <SharePoint:WebPartPageMaintenanceMessage runat="server"/>
    <SharePoint:DocumentTransformersInfo runat="server"/>
    <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:InitContentType runat="server"/>
      <wssuc:ToolBar CssClass="ms-formtoolbar" id="toolBarTbl" RightButtonSeparator="&nbsp;" 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>
  </Template>
</SharePoint:RenderingTemplate>

Uma chave componente no modelo DocumentLibraryFormCore DocumentLibraryFormCore desse exemplo é o componente DocumentLibraryFields DocumentLibraryFields, que se refere ao Microsoft.SharePoint.WebControls.DocumentLibraryFields T:Microsoft.SharePoint.WebControls.DocumentLibraryFields que deriva do Microsoft.SharePoint.WebControls.ListFieldIterator T:Microsoft.SharePoint.WebControls.ListFieldIterator classe. O iterador campo lista contém a lógica para dispor campos em uma ordem de colunas. No entanto, o ListFieldIterator T:Microsoft.SharePoint.WebControls.ListFieldIterator classe somente processa os controles se eles não têm sido substituídos nos modelos. Portanto, se você adicionar um controle campo para um campo específico (por exemplo, um controle que coloca o controle campo Título no direito superior e o controle campo AUTHOR sob ele), o iterador não dispor desse controle. Também em vez disso, você pode escolher para especificar seu próprios iterador campo lista, que é derivado do ListFieldIterator T:Microsoft.SharePoint.WebControls.ListFieldIterator classe e fornece personalizado lógica para fazer iteração campo.

Você pode substituir o modelo DocumentLibraryForm DocumentLibraryForm e especificar um modelo diferente DocumentLibraryFormCore DocumentLibraryFormCore. Você pode posteriormente personalizar o modelo forma a partir daí, especificando os controles existentes ou adicionando referências a outro personalizado controles que é definidos em um assembly ou arquivo .ascx.

Importante

Editando os arquivos .ascx usar como padrão que instala Windows SharePoint Services wssnoversshort em servidores Web front-end não é com suporte.As alterações feitas aos arquivos originalmente instalados podem ser substituído quando você instalar atualizações ou serviço pacotes para Windows SharePoint Services, ou quando você atualizar uma instalação para o próximo versão do produto.