Hallo, ich möchte die CAML-Query, die eine Dropdownlist beim erstellen eines SPLookupFields füllt manipulieren/einschränken.
Hier etwas konkreter in form eines Beispiels:
Ich habe jeweils eine Gruppe mit Arbeitern und eine Gruppe mit Chefs für Köln und Frankfurt. Alle Arbeiter werden in einer Liste "Personal" eingetragen und bekommen einen Standort zugewiesen, entweder Köln oder Frankfurt.
Die Chefs müssen anschließend ihrer Firma in einer weiteren Liste Personal zuweisen, dafür habe ich also in der entsprechenden Liste eine Lookup Spalte auf die Liste Personal gemacht und deren Name gemacht. Soweit so gut, das Problem hierbei ist, dass die Chefs z.B. in Frankfurt in der Dropdownlist nun auch Kölner Arbeiter angezeigt bekommen und zuweisen können.
Soweit ich weiß, steckt dahinter eine CAML Query, die die entsprechenden Werte selektiert, im standardfall alle.
Eine Listenansicht habe ich sowohl über das UI als auch über den sharePoint Designer schon einmal angepasst und bin mit der Syntax vertraut, jedoch ist es mir neu, dass man in diese Abfragen z.B. die Session einlesen kann um u.a. an die Gruppen zu gelangen, in der die aktuell angemeldete Person angemeldet ist.
Daher meine Frage: Kriege ich es hin, mit CAML eine solch komplexe Abfrage generisch für mein Beispiel zu gestalten? Wenn nicht, wäre ein denkbarer Lösungsansatz mit einem Content Editor und Javascript dahinter die Daten abzufragen und die Elemente aus der Dropdownlist zu löschen?
Vielen dank im voraus.
Du kannst das alles komplett vergessen. In 2010 gibt es nur eine Möglichkeit: nach dem Laden der Seite per JavaSCript alle Elemente aus dem DropDown entfernen, die gewünschten Nachladen und einfügen.
Aber Achtung: in 2010 werden die DropDowns komplett unterschiedlich gerendert und müssen entsprechend unterschiedlich behandelt werden, je nachdem, ob mehr oder weniger als 20 (oder 25?) Elemente enthalten sind.
Warum wollt Ihr diese Informationen denn in einer SharePoint-Liste haben?
Eine andere Möglichkeit wäre diese INFOs im AD einzutragen (Manager und/oder Standord) und diese mit AD-Import/Synchronisation in die SharePoint-Profile zu bringen und weiterzuverarbeiten?
Es sind mehrere hunderte.. autsch.
nagut das wird wohl etwas aufwendiger
Was mir noch eingefallen ist: Wäre es nicht eventuell möglich, mit Listviews zu arbeiten? eine View mit Personen Köln und Personen Frankfurt und das Target der DDL auf die jeweilige View anstatt ganze Liste umzubiegen?
Wie oben geschrieben hast Du keine andere Chance als das mit JS zu lösen. Oder eben einen eigenen Spaltentyp zu entwickeln oder eine der im Web verfügbaren zu verwenden (Suche nach filtered lookup), aber davon würde ich abraten. Das macht bei einer Migration nur Probleme.