none
Enregistrement de propriétés supplémentaires pour un champ personnalisé RRS feed

  • Discussion générale

  • Jai développer un champ personnalisé pour un lookup inter site. Lors de la création, je sauvegarde le webId la ListId et FieldId, pour le moment tout fonctionne. Mais dans la classe du Champ qui hérite de SPFieldUrl je peux pas sauvegarder ses propriétés pour les utilisés ensuite dans la BaseFieldControl.
    Voici mon fichier xml

        <?xml version="1.0" encoding="utf-8" ?><FieldTypes> 
        <FieldType>
        <Field Name="TypeName">CustomLookup</Field>
        <Field Name="ParentType">URL</Field>
        <Field Name="TypeDisplayName">Alight Custom Lookup</Field>
        <Field Name="TypeShortDescription">Alight Custom Lookup</Field>
        <Field Name="UserCreatable">TRUE</Field>
        <Field Name="Sortable">TRUE</Field>
        <Field Name="Filterable">TRUE</Field>
        <Field Name="ShowInSurveyCreate">TRUE</Field>
        <Field Name="ShowInDocumentLibraryCreate">TRUE</Field>
        <Field Name="ShowInColumnTemplateCreate">TRUE</Field>
        <Field Name="ShowInDisplayForm">TRUE</Field>
        <Field Name="FieldTypeClass">CustomFields.Fields.CustomLookup,$SharePoint.Project.AssemblyFullName$</Field>
        <Field Name="FieldEditorUserControl">/_controltemplates/15/CustomLookupFieldEditor.ascx</Field>
        <Field Name="AllowBaseTypeRendering">FALSE</Field>
        <Field Name="CAMLRendering">FALSE</Field>
        </FieldType>
        </FieldTypes>

    Le UserControl pour la création du champ

                <wssuc:InputFormSection runat="server"><Template_Title>
            <asp:Literal runat="server" ID="litSectionTitle"></asp:Literal>
        </Template_Title>
    <Template_Description>
    <asp:Literal runat="server" ID="litSectionDescription"></asp:Literal>
    </Template_Description>
    <template_inputformcontrols>
    <wssuc:InputFormControl runat="server">
    <Template_Control>
                    <asp:Literal runat="server" ID="litWebForList"></asp:Literal>
                    <asp:Label runat="server" ID="lblSelectedWebForList"></asp:Label>
                    <asp:DropDownList ID="LookupWeb" runat="server" OnSelectedIndexChanged="ddlWebForListOnSelectedIndexChanged" AutoPostBack="True"></asp:DropDownList></Br>
                    <wssawc:InputFormRequiredFieldValidator ID="validator_LookupWeb" runat="server" Display="Dynamic" ControlToValidate="LookupWeb" BreakBefore="true" />

                    <asp:Literal runat="server" ID="litLookupList"></asp:Literal><asp:Label runat="server" ID="lblSelectedLookupList"></asp:Label>
                    <asp:DropDownList ID="LookupList" runat="server"  OnSelectedIndexChanged="ddlLookupListOnSelectedIndexChanged" AutoPostBack="True"></asp:DropDownList></Br>
                    <wssawc:InputFormRequiredFieldValidator ID="validator_LookupList" runat="server" Display="Dynamic" ControlToValidate="LookupList" BreakBefore="true" />
                    <asp:Literal runat="server" ID="litDisplayColumn"></asp:Literal><asp:Label runat="server" ID="lblSelectedDisplayColumn"></asp:Label>
                    <asp:DropDownList ID="LookupField" runat="server"></asp:DropDownList>
                    <wssawc:InputFormRequiredFieldValidator ID="validator_LookupField" runat="server" Display="Dynamic" ControlToValidate="LookupField" BreakBefore="true" />
                    </Template_Control>
    </wssuc:InputFormControl>
    </template_inputformcontrols>
    </wssuc:InputFormSection>
    <SharePoint:RenderingTemplate ID="CustomLookupFieldEditAdd" runat="server">
        <Template>
            <table>
                <tr>
                    <td>
                        <asp:Dropdownlist ID="LookupField" Columns="2" runat="server" AutoPostBack="true" />
                    </td>
                </tr>
            </table>
        </Template>
    </SharePoint:RenderingTemplate>

    Et la Class du CustomField :

         class CustomLookup : SPFieldUrl
        {
           
            public Guid WebSourceId
            {
                get
                {
                        return this.WebSourceId;
                }
                set
                {
                        this.WebSourceId = value;
                }
                
            }
            

            /// <summary>
            /// Get or set the Id of the lookup list.
            /// </summary>
            public Guid LookupListId
            {
                get
                {
                    return this.LookupListId;
                }
                set
                {
                    this.LookupListId = value;
                }
            }
            

            /// <summary>
            /// Get or set the Id of the field to use as the display column.
            /// </summary>
            public Guid DisplayColumnId
            {
                get
                {
                    return this.DisplayColumnId;
                }
                set
                {
                    this.DisplayColumnId = value;
                }
            }

           
             #region Constructors

            public CustomLookup(SPFieldCollection fields, string fieldName)
                : base(fields, fieldName)
            {
                this.Initialize();
                
            }

            public CustomLookup(SPFieldCollection fields, string typeName, string displayName)
                : base(fields, typeName, displayName)
            {
                this.Initialize();
                
            }

            #endregion Constructors
            public override BaseFieldControl FieldRenderingControl
            {
                get
                {
                    BaseFieldControl fieldControl = new CustomLookupControl(this);
                    fieldControl.FieldName = InternalName;
                    return fieldControl;
                }
            }
            
            public override void Update()
            {
                this.SetCustomProperty("WebSourceId", WebSourceId);
                this.SetCustomProperty("LookupListId", LookupListId);
                this.SetCustomProperty("DisplayColumnId", DisplayColumnId);
                base.Update();
                
            }
            private void Initialize()

            {   this.WebSourceId = (Guid)this.GetCustomProperty("WebSourceId");
                this.LookupListId = (Guid)this.GetCustomProperty("LookupListId");
                this.DisplayColumnId = (Guid)this.GetCustomProperty("DisplayColumnId");
                
            }
            
            
        }
    C'est quoi la solution pour sauvegarder ses informations pour les utilisés dans la BaseFieldControl afin de mettre a jour la DropDownList pour afficher les informations sauvegarder lors de la création du champ 
     
    jeudi 22 mai 2014 08:08