SharePoint : Fehlende Inhalte bei Auswahlspalten

Der Titel gibt nur einen unvollständigen Teil dessen wieder, was ich gleich erläutern will. Hätte ich aber alle Bedingungen, die erfüllt sein müssen, um das Verhalten zu reproduzieren, in den Titel gesteckt, wäre dieser mindestens zweizeilig geworden.

Konstellation:

  1. man erstellt in SharePoint eine Liste mit einer Spalte vom Typ Auswahl mit beispielsweise den Werten 1, 2, 3
  2. jetzt öffnet man das Formular mit InfoPath, ändert dort das Design oder was auch immer und published das Formular zurück
  3. die Liste speichert man im nächsten Schritt als Vorlage
  4. danach legt man eine neue Website an und erstellt in dieser eine Liste aus der o.g. Vorlage
  5. jetzt fügt man der Spalte vom Typ Auswahl (siehe 1.) einen weiteren Wert (hier “4”) hinzu und speichert alles ab
  6. will man jetzt der Liste einen neuen Wert hinzufügen, fehlt der neue Wert

Überlegungen:
Erste Idee: Die Spalte in der aus der Vorlage neuerstellten Liste referenziert – wie auch immer und eigentlich auch völlig unlogisch – noch auf die “Ur”liste. Das kann aber nicht sein, da ein, in der Urliste hinzugefügter Wert (hier “5”), in der neuen Liste nicht auftaucht.
Um das Problem kurzfristig zu lösen, öffnet man in der neuen Liste das Formular mit InfoPath. Es kommt dann interessanterweise folgende Fehlermeldung:

Nachdem man jetzt die Frage bejaht hat, published man das Formular und die Werte stimmen jetzt mit den, in der neuen Liste hinterlegten – überein.
Wenn man sich das Formular als XSN wegspeichert und entpackt, findet man dort eine Datei mit dem Namen choices.xml
Hier der Inhalt wenn man die InfoPath-Meldung oben verneint (A):

<root><Auswahl><SharePointListChoice_RW DisplayName="1">1</SharePointListChoice_RW><SharePointListChoice_RW DisplayName="2">2</SharePointListChoice_RW><SharePointListChoice_RW DisplayName="3">3</SharePointListChoice_RW></Auswahl></root>

Hier der Inhalt wenn man die InfoPath-Meldung oben bejaht (B):

<root><Auswahl><SharePointListChoice_RW DisplayName="1">1</SharePointListChoice_RW><SharePointListChoice_RW DisplayName="2">2</SharePointListChoice_RW><SharePointListChoice_RW DisplayName="3">3</SharePointListChoice_RW><SharePointListChoice_RW DisplayName="4">4</SharePointListChoice_RW></Auswahl></root>

Damit ist schon mal klar, woher das Feld Auswahl in dem Formular seine Werte hat. Jetzt stellt sich aber die Frage, warum hat das Feld Auswahl bei (A) nicht den Wert “4” als Auswahlwert?!

Nächster Test:
Ich bejahe die Frage von InfoPath (B), publishe das Formular, und füge der Spalte einen neuen Auswahlwert hinzu (hier “7”). Ohne das Formular jetzt in SharePoint vorher zu öffnen, schaue ich mir das Formular genauer an; also mittels InfoPath öffnen – interessanterweise kommt jetzt schon wieder die Meldung:

, und in einen Ordner entpacken. In der o.g. choices.xml ist der Wert “7” nicht zu finden:

<root><Auswahl><SharePointListChoice_RW DisplayName="1">1</SharePointListChoice_RW><SharePointListChoice_RW DisplayName="2">2</SharePointListChoice_RW><SharePointListChoice_RW DisplayName="3">3</SharePointListChoice_RW><SharePointListChoice_RW DisplayName="4">4</SharePointListChoice_RW></Auswahl></root>

Ohne jetzt an dem Formular was zu ändern, öffne ich parallel in SharePoint das Formular und finde den Wert „7“ in der Auswahl:

Es muss folgendes passieren: Beim Öffnen des Formulars über SharePoint muss es unter normalen Umständen wohl so sein, dass er sich die Werte aus der Auswahlspalte in das Formular (in die choices.xml) zieht. Passt man das Formular jetzt mittels InfoPath an, scheint dieser Mechanismus nicht mehr sauber zu greifen. Nutzt man die Liste jetzt mittels einer Vorlage an anderer Stelle, werden die Werte nicht mehr gezogen. Warum? Keine Ahnung? Womöglich versucht das Formular mittels einer ID die Spalte zu finden. Diese hat sich aber geändert (ist ja eine neue Liste) und die Werte werden nicht mehr gefunden. Öffnet man jetzt das Formular mittels InfoPath und bejaht die obige Meldung, wird diese Information wieder glattgezogen und er bekommt die richtige ID für die Spalte. Der zweite Test zeigt aus meiner Sicht, dass die Werte für diese Spallte erst zur Laufzeit (also beim Öffnen in SharePoint) in das Formular (in die choices.xml) geladen werden.
Das alles habe ich mit vielen Konjunktiven belegt. Ich werde hierzu noch ein paar Nachforschungen anstellen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.