SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Werte in Spalte "Nachschlagen"/Lookup-Spalte begrenzen

Unbeantwortet Dieser Beitrag hat 14 Antworten

Ohne Rang
49 Beiträge
Mel89 erstellt 4 Aug. 2014 09:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Gibt es eine Möglichkeit, die Werte, die der Spaltentyp "Nachschlagen" zurückgibt mittels eingebautem Filter zu begrenzen?

Ich möchte z.B. in einer Liste A, Informationen in Liste B nachschlagen, jedoch soll mir nicht ALLE Elemente der Liste B angezeigt werden, sondern beispielsweise nur die Elemente in Liste B mit dem Status "aktiv".

Vielen Dank im Voraus für eure Rückmeldung!

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Aug. 2014 09:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Out-of-the-box gibt es da nichts. Man kann da entweder selbst eingreifen (JavaScript) oder sich Drittanbieterlösungen suchen (sharepoint filtered lookup).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Mel89 Als Antwort am 4 Aug. 2014 09:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke!

Hättest du eine Lösung wie das mit JavaScript funktioniert?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Aug. 2014 10:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Eine fertige Lösung habe ich nicht parat, nur die grundsätzliche Vorgehensweise:

man macht das <select> Element (das DropDown) in der Seite ausfindig und entfernt alle <option> Elemente (das sind die Einträge im DropDown). Dann kann man per JavaScript Object Model die Einträge der Nachschlageliste laden und in einer Schleife durchgehen. Alle die passen, werden wieder ins DropDown eingefügt. Alle die nicht passen, werden ignoriert.

Bei SharePoint 2013 kann man das auch etwas eleganter per Client Side Rendering machen, aber die Vorgehensweise ist dieselbe.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
6 Beiträge
Klaus Bergmann Als Antwort am 4 Aug. 2014 11:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich verwenden dazu die Sp-Services. in der Zeile mit CAMLQuery wird der Filter gesetzt.

Beispiel mit zwei "Cascading". Das script wird mit SPD unter <asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server"> eingebaut!


<script type="text/javascript" src="/websites/testseite/Freigegebene%20Dokumente/sp_intern/jquery-2.1.0.min.js"></script>
<script type="text/javascript" src="/websites/testseite/Freigegebene%20Dokumente/sp_intern/jquery.SPServices-2014.01.js"></script>

<script type="text/javascript">
 
 $(document).ready(function() {
 $().SPServices.SPCascadeDropdowns({
  relationshipList: "Projekte",
  relationshipListParentColumn: "Firma",
  relationshipListChildColumn: "Title",
  relationshipListSortColumn: "Title",
  parentColumn: "Firma",
  childColumn: "Projekt",
  debug: true
});
 $().SPServices.SPCascadeDropdowns({
  relationshipList: "Firmenkontakte",
  relationshipListParentColumn: "Gruppe_x0020_ort_x002d_firma", 

 relationshipListChildColumn: "Vollst_x00e4_ndigerName", 
  relationshipListSortColumn: "Title",
  CAMLQuery: "<Eq><FieldRef Name=\"Aktiv\" /><Value Type=\"Text\">1</Value></Eq>",

 
  parentColumn: "Firma",
  childColumn: "Kontaktperson",
  debug: true
});

});

</script>

Ohne Rang
49 Beiträge
Mel89 Als Antwort am 4 Aug. 2014 13:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für die Rückmeldung!

Bin leider Anfängerin mit JavaScript...aber werde mal mein bestes versuchen.

Wo baust du diesen Code ein? Im DispForm.aspx der entsprechenden Liste? Oder einfach in ein Content Webpart auf der Seite wo sich die Liste befindet?

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Aug. 2014 13:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich übernehme das mal für Klaus ;-)

Der Code gehört in die EditForm.aspx (und optional auch in die NewForm.aspx) und Du kannst ihn direkt in der Codeansicht von SharePoint Designer eingeben. Noch ein Tip: z.B. mit den Entwicklertools im IE (F12) kannst Du JavaScript debuggen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Mel89 Als Antwort am 4 Aug. 2014 14:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok. Das heisst ich generiere zuerst die beiden Files "jquery-2.1.0.min.js" und "jquery.SPServices-2014.01.js" und lege sie in einer beliebigen Dokumentenbibliothek ab. Beinhalten diese beiden Files auch einen Code; falls ja - welchen?

Danach baue ich den von Klaus genannten Code in das EditForm.aspx ein? Ein NewForm.aspx habe ich nicht, nur ein Upload.aspx, da es sich um eine Bibliothek handelt.

Sorry für meine für euch sicherlich selbst erklärenden Fragen.. :)

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Aug. 2014 14:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die beiden Files kannst Du nicht selbst erzeugen, sondern mußt Du Dir besorgen ;-)

jQuery gibt es hier: http://jquery.com/download/

SPServices gibt es hier: http://spservices.codeplex.com/

Der Code von Klaus ist eigentlich für sog. Cascaded Lookups, d.h. die Auswahlmöglichkeiten eines Nachschlagefeldes werden durch die Auswahl eines ersten Nachschlagefeldes gefiltert. Wenn man z.B. zwei Nachschlagelisten hat, eine für Kontinente und im zweiten dann nur noch die Länder des vorher ausgewählten Kontinents haben möchte. Den Teil zum Filtern des zweiten Feldes muß man sich dort rausklauben.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Mel89 Als Antwort am 4 Aug. 2014 15:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also ich habe nun die beiden Files in der Dokumentlibrary gespeichert und folgenden Code in mein EditForm.aspx integriert:

<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
<script type="text/javascript" src="/sctoptest/csa/GLDokumente/jquery.SPServices-2014.01.min.js"></script>
<script type="text/javascript" src="/sctoptest/csa/GLDokumente/jquery.SPServices-2014.01.js"></script>

<script type="text/javascript">
 
 $(document).ready(function() {
 $().SPServices.SPCascadeDropdowns({
  relationshipList: "Pendenzen und Projekte",
  relationshipListParentColumn: "Title",
  relationshipListSortColumn: "Title",
  CAMLQuery: "<Eq><FieldRef Name=\"Status\" /><Value Type=\"Choice\">1</Value=\"Nicht begonnen\"></Eq>",
  parentColumn: "Test-Nachschlagespalte",
  debug: true
});

</script>

Leider funktioniert es aber nicht... habe Klaus' Code natürlich abgeändert, da ich ja nur einen Filter in meine Nachschlagespalte setzen möchte. Wisst ihr wo das Problem liegt?

Danke und viele Grüsse

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Aug. 2014 15:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Zum eigentlichen Code kann ich mangels Kenntnis nichts sagen, aber Du hast die dateien falsch eingebunden. Wie von Klaus gezeigt, brauchst Du zuerst eine jQuery und dann SPServices.

Du hast jetzt zwei Versionen von SPServices eingebunden, aber kein jQuery. Für beide gibt es immer eine "normale" Version, die sich auch zum Debuggen eignet und eine Version mit min im Namen, die für den produktiven Einsatz gedacht ist.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
6 Beiträge
Klaus Bergmann Als Antwort am 4 Aug. 2014 15:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

zuerst einmal Dank an Andi für die Erklärungen.

Ich vermute, dass es an den Leerzeichen in deinem Listennamen liegt. Diese müssen mit den speziellen Zeichen, siehe in meinem Code.

Hier dient "_x0020_" als Unterstrich. Die Zeichen kann man aus der Url lesen.

Gruß Klaus

Ohne Rang
49 Beiträge
Mel89 Als Antwort am 6 Aug. 2014 10:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo

Vielen Dank Klaus und Andi für die bisherigen Antworten!

Leider klappt es noch immer nicht. Mein Code sieht nun wie folgt aus:

<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
<script type="text/javascript" src="/sctoptest/csa/GLDokumente/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/sctoptest/csa/GLDokumente/jquery.SPServices-2014.01.js"></script>
<script type="text/javascript">
 $(document).ready(function() {
 $().SPServices.SPCascadeDropdowns({
  relationshipList: "Pendenzen%20und%20Projekte",
  relationshipListParentColumn: "Title",
  relationshipListSortColumn: "Title",
  CAMLQuery: "<Eq><FieldRef Name=\"Status\" /><Value Type=\"Choice\">1</Value=\"Nicht begonnen\"></Eq>",
  parentColumn: "Test%5Fx002d%5FNachschlagespalte"
  debug: true
});
</script>


Vielleicht stimmt auch der Filter nicht.. kann mir da jemand weiterhelfen?

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 6 Aug. 2014 10:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe mich wie gesagt mit den Cascaded DropDowns nicht auseinandergesetzt und kann deshalb nicht sagen, wie man den Teil zum Filtern extrahieren kann. Vielleicht kann Klaus da nochmal was dazu sagen.

Aber Du hast zwei Fehler bei der Angabe der namen für relationshipList und parentColumn. Bei der Liste solltest Du die %20 durch Leerzeichen ersetzen. Bei der parentColumn weiß ich nicht, ob der Display Name oder der Internal Name erwartet wird, aber beide solltest Du ebenfalls nicht codieren. Hier also die %5F durch einen Unterstrich ersetzen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Mel89 Als Antwort am 21 Aug. 2014 14:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Status Update: Bisher hat es noch nicht geklappt. Werde aber die Lösung posten, sobald ich sie habe.