2010-09-16 3 views
1

Je suis occupé à créer une partie Web personnalisée avec divers champs de texte et de recherche. Tous sont enregistrés correctement en dehors des champs de recherche qui permet plusieurs sélections. Je n'ai pas ce problème avec les champs de recherche qui ne permettent qu'une seule valeur à sélectionner.Uniquement Valeurs alternées dans SPFieldMultiChoice enregistré

Voici le code pour obtenir tous les éléments sélectionnés dans mon CheckBoxList, la conversion à une valeur de MultiChoice et en attribuant à ma liste [ColumnName]

try 
{ 
    SPFieldMultiChoiceValue _segmentchoices = new SPFieldMultiChoiceValue(); 
    foreach (ListItem ls3 in _segment.Items) 
    { 
     if (ls3.Selected) _segmentchoices.Add(ls3.Value); 
    } 
    myItems["Segment"] = _segmentchoices; 
    myItems.Update(); 
} 
catch (Exception ex) { _errorMessage += "||| Segment : " + ex.Message; } 

La liste des valeurs (_segmentchoices) est correctement créé et regarde comme ceci: {; # 1; # 2; # 3; # 4; # 5; #}

Cependant, lorsque son sauvé enregistre uniquement les valeurs 1, 3 et 5.

Mon code ne génère pas une erreur, donc je suis à une perte de ce qui pourrait être faux. Des idées sur ce que je dois regarder? Est-ce que je vais dans le mauvais sens?

Toute aide serait appréciée. Merci

Répondre

1

Je viens de réaliser que vous parlez d'un champ de recherche multiple. Le format doit être quelque chose comme: 2;#Procedures;#3;#Systems;#7;#Services

Le comportement que vous décrivez est logique car il interprète probablement ;#1;#2;#3;#4;#5;# comme ceci: obtenir l'élément dans la liste de recherche avec un lookupID de 1 (lookupValue est 2), lookupID de 3 (lookupValue est 4) et lookupID 5 (lookupValue est vide)

Voici un code que vous pouvez utiliser pour mettre à jour un champ de choix multi-sélection:

using (SPSite site = new SPSite(siteUrl)) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
     SPList list = web.Lists[listName]; 
     SPListItem item = list.Items[0]; 

     SPFieldLookupValueCollection spflvc = new SPFieldLookupValueCollection(); 
     spflvc.Add(new SPFieldLookupValue(3, string.Empty)); 
     spflvc.Add(new SPFieldLookupValue(7, string.Empty)); 
     item["Keywords"] = spflvc; 
     item.Update(); 
    } 
} 

Le second paramètre à SPFieldLookupValue ne semble pas se soucier si c'est pas sed string.Empty qui pourrait aussi expliquer pourquoi il les ignore ci-dessus.

+0

HI Kit, merci pour cela. J'ai appris quelque chose de nouveau :). Cependant, j'ai vérifié et il va dans le bon ordre. Donc, ce n'est toujours pas résoudre mon problème. Je vais y jeter un coup d'œil ce soir et essayer d'autres choses et voir si je peux comprendre ce qui se passe. – Sonja

+0

Je viens de me rendre compte que vous utilisez une colonne de recherche multi-sélection. Je pense que vous avez besoin d'un format différent parce que quand je regarde dans ma liste il montre quelque chose comme: 2; #Procedures; # 3; #Systems; # 7; #Services –

+0

Totalement changé ma réponse ... j'espère que cela aide. –

Questions connexes