2009-12-26 5 views
0

J'ai écrit un champ personnalisé qui étend SPFieldLookup. J'ai placé AllowMultipleValues ​​= true; Voici Champ de contrôle Valeur:Sharepoint Personnalisé SPFieldLookup enregistrer une seule valeur

public override object Value 
    { 
     get 
     { 
      EnsureChildControls(); 
      SPFieldLookupValueCollection vals = new SPFieldLookupValueCollection(); 
      ICollection s = TinBaiLienQuanPicker.SelectedIds; 
      if (s != null && s.Count > 0) 
      { 
       foreach (var i in s) 
       { 
        ListItem z = availableItems.Find(x => (x.Value == i.ToString())); 
        if (z != null) 
        { 
         vals.Add(new SPFieldLookupValue(int.Parse(z.Value), z.Text)); 
        } 
       } 
      } 
      return vals; 
     } 
     set 
     { 
      EnsureChildControls(); 
      base.Value = value as SPFieldLookupValueCollection; 
     } 
    } 

Lorsque la commande enregistrer des données sur le terrain, je le vois revenir une collection qui ont une valeur multiple. Mais lorsque je récupère à nouveau des données, je ne reçois que la première valeur. Je reçois la valeur de la propriété ListItemFieldValue du champ de contrôle.

S'il vous plaît donnez-moi un pourboire. Merci beaucoup.

Répondre

0

La logique de stockage de données est différente dans la base de données pour le champ de recherche avec une valeur par rapport à plusieurs valeurs. Vérifiez que dans la définition de type de champ xml ParentType est défini sur LookupMulti au lieu de Recherche.

+0

Salut, EG. Merci pour votre réponse. ParentType était déjà défini sur LookupMulti. –

0

Vous devez hériter de la classe de contrôle de champ de MultipleLookupField et non de LookupField. Êtes-vous sûr de le faire?

+0

Salut, naïfs. Lorsque je développe BaseFieldControl, j'obtiens une seule valeur dans les modes Affichage et Edition. Lorsque je change d'héritage pour LookupField ou MultipleLookupField comme vous le dites, le champ renvoie uniquement la valeur correcte en mode édition. En mode d'affichage, seul le premier élément est renvoyé. Merci. –

+0

"mise à jour cumulative de décembre" de SharePoint parle aussi de votre: "Vous développez un type de champ personnalisé qui hérite de la classe SPFieldLookUp Vous souhaitez stocker plusieurs valeurs dans un champ de ce type de champ personnalisé. true, mais après avoir défini la propriété AllowMultipleValues ​​sur True, le type de champ est affiché en tant que Lookup au lieu du type de champ personnalisé. " http://support.microsoft.com/kb/977022/ – naivists

Questions connexes