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.




Webpart und Filterung in EditForm.aspx

Unbeantwortet Dieser Beitrag hat 18 Antworten

Ohne Rang
271 Beiträge
Kiera erstellt 13 Okt. 2009 17:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo alle miteinander,

ich hab grad ne abenteuerliche Idee, vielleicht kann mir jemand bei der Umsetzung helfen oder mir mitteilen, dass es totaler Quatsch ist, was ich vor habe ;o)

Ich habe eine benutzerdefinierte Liste ("Schulungen"), die unter anderem das Feld "Gruppe" enthält.
Und ich habe eine andere Liste ("Gruppen"), aus der dieser Wert stammt (Lookup).

Nun habe ich in die EditForm der Liste "Schulungen" das Webpart der Liste "Gruppe" eingefügt, sodass mir alle Gruppen angezeigt werden, die es gibt. Nun möchte ich aber, dass nur die Gruppe(n) im Webpart angezeigt werden, die in dem aktuellen "Schulungen"-Eintrag im Feld "Gruppe" stehen.

Ist das irgendwie möglich? Filtern kann ich die Liste im Webpart ja ganz einfach, aber wie bekomme ich als Filter den Wert des "Gruppen"-Felds gesetzt? Kann da ja nicht einfach als Filterwert "@Gruppe" schreiben?
Jemand vielleicht eine Idee? :o)

Grüßle Kiera

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Okt. 2009 08:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Kiera"] ich hab grad ne abenteuerliche Idee, vielleicht kann mir jemand bei der Umsetzung helfen oder mir mitteilen, dass es totaler Quatsch ist, was ich vor habe ;o)[/quote]

Das ist kein Quatsch, sondern völlig normales Vorgehen :-)

Aus der Diskussion gestern erinnere ich mich, daß das Gruppen-Lookup Mehrfachauswahl zuläßt. Das wird zum Filtern eher schwierig. Habt Ihr MOSS? Dort gibt es ein "Seitenfeld-Filterwebpart", das einen (oder mehrere) Wert des Parents (Schulungen) als Filter zur Verfügung stellen kann. Ich nehme zur Anzeige der Child-Datensätze dann immer eine SPD-Datenansicht.

Falls Ihr WSS habt, dann könntest Du aus dem EditForm eine benutzerdefiniertes Formular machen, das dann ebenfalls Webpartverbindungen zuläßt (aber nicht für Mehrfachauswahl). Ich habe zu diesem Zweck auch schon das Seitenfeld-Filterwebpart für WSS nachprogrammiert. Kann ich Dir aber leider nicht (umsonst) zur Verfügung stellen...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
271 Beiträge
Kiera Als Antwort am 14 Okt. 2009 14:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Was für ein Glück, wir haben einen MOSS :o)

Nur leider werden mir keine Filter-Webparts angezeigt... muss ich die noch irgendwo aktivieren?
Im Webpartkatalog habe ich auch keine Webparte mit "Filter" drin...

Grüßle Kiera

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Okt. 2009 14:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Da weiß ich gerade auch nicht, ob die vielleicht zur Enterprise-Version gehören und ob man dazu erst ein Feature aktivieren muß.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
1714 Beiträge
C.Kaiser Als Antwort am 14 Okt. 2009 14:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

die verstecken sich afaik unter den Enterprise Features

Also "Websiteeinstellungen" -> "Websitesammlungsfeatures"

Beste Grüße,
Christian

http://www.sharepoint-rhein-ruhr.de

Ohne Rang
271 Beiträge
Kiera Als Antwort am 14 Okt. 2009 14:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für die Info!
Hm darf ich die aktivieren, wenn ich nur nen Standard-Server hab?

Ohne Rang
271 Beiträge
Kiera Als Antwort am 14 Okt. 2009 14:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich korrigier mich: ich hab da keine Enterprise-Features, die ich überhaupt aktivieren könnte.

Aber auf einem anderen Sharepoint Standard Server habe ich komischerweise die Filter-Webparts... Und da sind keine Enterprise-Features aktiviert.

Ohne Rang
10 Beiträge
Medith Als Antwort am 14 Okt. 2009 14:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

also ich bin auch schon auf die Filter-Webparts im Web gestoßen. Hatte diese aber auch nicht auf meinen MOSS gefunden. Mir ist gerade eingefallen das ich in meinem "schlauen" Buch eine Auflistung von Features von MOSS Standard und Enterprise enthält. Die Filter Web Pars sind nur bei der Enterprise enthalten. leider.

Ohne Rang
10 Beiträge
Medith Als Antwort am 14 Okt. 2009 15:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mir ist gerade so eingefallen das ich das gleiche brauch. Und hab mir da mal ne "Strategie" überlegt wie das funktionieren könnte:

Das  EditForm Webpart sendet nur die aktuelle ID der geöffneten Schulung. Diese ID empfängt ein eigen geschriebenes Listenwebpart.  Dieses Listenwebpart öffnet nun programmtechnisch die Schulungliste und holt sich das betroffene Element. Dort kann man sich nun die Werte aus dem lookup feld holen (ID und Wert). Nun holt man sich alle Items per ID aus der SPliste Gruppen und fügt nun diese Items der SPGridviewliste hinzu. So in der Richtung müsste das funktionieren. Ich Probier das morgen mal aus. Ob da was herraus kommt kann ich nicht versprechen. Bin auch ein totaler Anfänger  in Sachen .NET/C#/Sharepoint etc ;)  Ich hab schon viel mit Webparts experementiert und auch nette Sachen hinbekommen aber die Lösung wäre dann Statisch. Also speziell für die 2 Listen.

 

Ohne Rang
271 Beiträge
Kiera Als Antwort am 14 Okt. 2009 15:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ohjeh, das klingt ja noch abenteuerlicher als meine Idee ;o)

Ok, ich notiere: Filter-Webparts sind gestorben, weil ich nur nen Standard-Sharepoint-Server habe.

Und deine Idee Medith: Hm klingt sehr kompliziert, viel zu kompliziert für mich... ;o)

Mein aktueller Stand ist ja der, dass ich bereits ein eigenes "EditForm.aspx" angelegt habe, in dem zusätzlich eine Datenansicht auf die Liste "Gruppe" angezeigt wird, was ja auch alles funktioniert. Jetzt muss es doch eine Möglichkeit geben, mit der ich den Wert aus dem XSL-Template von "Schulungen" an die Dataview von "Gruppe" auf der gleichen ASPX-Seite übergeben kann, die ich dann wiederum filtere... oder? :o)

Grüßle Kiera

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Okt. 2009 15:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich hab' noch einen :-)

Du kannst ja im SPD "Datenquellen verbinden". Füge also der Datenquelle für die Gruppen-Datenansicht noch die Liste "Schulungen" hinzu. Diese Daten kannst Du filtern über die ID, die Du aus der URL (Afragezeichenfolge) erhälst. Damit hast Du dann das passende Element aus Schulungen auch bei den Gruppen.

Mit ein wenig XSL-Gefrickel müßte man die jetzt filtern können. Packe den Wert von Schulungen.Gruppen in eine xsl:variable. Für die Gruppen steht irgendwo sowas:
select="Rows"
Das ersetzt Du durch select="Rows[@Gruppe=$VariableAusSchulungen]"

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
271 Beiträge
Kiera Als Antwort am 14 Okt. 2009 17:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hey, das klingt ja eigentlich recht einfach!

Ich hab jetzt auch ne tolle Datenansicht, die Schulungen mit Gruppen verknüpft und mir die zugeordneten Personen anzeigt,... ABER: das mit meinen Mehrfachwerten geht wieder nicht :o(

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Okt. 2009 23:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Da mußt Du Dir wohl irgendwelche Stringfunktionen für XSL ergoogeln, damit Du die Werte zerlegen kannst.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
271 Beiträge
Kiera Als Antwort am 15 Okt. 2009 08:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wow, ich sitze grad mit einem fetten Grinsen im Gesicht vorm PC :o)

Die XSL-Funktion, die ich an dieser Stelle benötige, war "contains" statt einem "=", eigentlich logisch :o)

Ohne Rang
10 Beiträge
Medith Als Antwort am 15 Okt. 2009 14:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

HI,

könntest du Den XSL String mal Posten?

Ich bin mit meinem WebPart schon relativ weit. Hat nur ein paar kleine Bugs ;) Aber die Jag ich morgen. Du kannst dir dann das Webpart gern mal anschaun ob es für die nützlich sein könnte. Also erst wenns fertig ist natrülich.

Ohne Rang
271 Beiträge
Kiera Als Antwort am 16 Okt. 2009 09:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo alle zusammen,

sorry für die verzögerte Antwort, musste noch ein anderes Projekt fertig machen...

Ich hab alles wieder ein bisschen umgestellt... hier mal ne kurze Erklärung dazu:

  • EditForm.aspx der "Schulungs"-Liste neu erstellt mit einem "benutzerdefiniertem Listenformular"
  • Unterhalb dieses DataFormWebParts (im Quellcode) habe ich eine neue Datenansicht erstellt, die zuerst alle Schulungen mit den dazugehörigen Gruppen und durch ein "verknüpftes Unterformular" dann die der Gruppe zugeordneten Personen anzeigt
    • Quelle: "verknüpfte Datenquelle Schulung + Gruppe"
    • Verbindung des Unterformulars:
      <xsl:variable name="Rows" select="../../../Gruppen/Rows/Row[contains($dvt_ParentRow/@Gruppe,@Gruppen_Titel)]" />
      (@Gruppe stammt aus der Liste "Schulung" und @Gruppen_Titel aus der Liste "Gruppe")
  • Diese Ansicht filtere ich, indem ich aus der URL die ID des Schulungs-Eintrags in einen Parameter schreibe (Param1 - Parameterquelle: Abfragezeichenfolge, Variable für Abfragezeichenfolge: ID, Standardwert: 0)
  • In der Ansicht gebe ich den Filter ein: "@ID gleich [Param1]"
  • Dann noch ein paar Anpassungen am Layout, und schon habe ich eine Datenansicht, die mir die Gruppen der gewählten Schulung zeigt mit den dazugehörigen Personen.

Ich hoffe, ich konnte vielleicht dem ein oder anderem mit dieser kurzen, aber vermutlich sehr wirren, Erklärung helfen, so wie ihr mir geholfen habt, überhaupt diese Lösung zu erstellen - Dankeschön!!! :o)

Grüßle Kiera

@Medith: Vielen Dank für dein Web-Part-Angebot, aber ich denke im Moment lass ich es mal so wie es ist! Aber ich wünsche Dir viel Glück, dass deine Jagd heute erfolgreich verläuft ;o)

 

Ohne Rang
10 Beiträge
Medith Als Antwort am 16 Okt. 2009 11:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke! Die Variante werde ich auch mal ausprobieren.

Mein Webpart funktioniert nun. Was kann es:

  • Da es frei konfigurierbar ist, kann es für alle Listen eingesetzt werden
  • Es visualisiert eine vorhande Liste mit einer freuauswählbaren Ansicht
  • Wenn dieses Webpart als Lookupfilter eingestezt werden soll, muss nur die Provider Liste und das Lookupfeld angeben werden(Webparteigenschaft).
  • Stellt die Liste dar, wie das Standard ListviewWebpart
  • Der Provider kann ein Listenwebpart oder ein Listenformularwebpart sein (edit: Bug gefunden. Im SPD wird das webpart angezeigt aber wenn ich dann die Dispform.aspx aufrufe kommt unerwarteter Fehler)

Was mir noch nicht so richtig gefällt:

  • Es sollte speziell für die nutzung des Webparts eine Ansicht erstellt werden. Wenn zB die standart "Alle Elemente"  ansicht ausgwählt wird und dann  die Liste "normal" aufgerufen wird, enthält diese Ansicht nur noch die gefilterten Werte und nicht mehr alle.
  • Die Ansicht muss eine Spalte besitzen die wirklich auch nur eindeutige Werte enthät. zB "ID" da ich noch nicht herausgefunden habe wie ich ansonsten an die ID des gesendeten Itmes herran komme.
  • Nicht empfehlenswert  ist der einsatz bei besonders großen Listen. Da ich iterativ in jedes Item hinein gehe und mir die Lookupwerte anschau. Könnte zu Performenceproblem führen

Ich bin noch ein bischen beim Feilen, dass man auch bei der Webparteigenschaft die Toolbar ein und ausblenen kann und sobald ich dann meinen Code gescheit formatiert und kommentiert habe (Bei mir ist nie was kommentiert und die Formatierung und aller sau :-D ) werd ich bei Bedarf den Code auch gerne Posten! Also wer will einfach nur bescheid sagen

Ohne Rang
271 Beiträge
Kiera Als Antwort am 16 Okt. 2009 12:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Medith,

also Interesse hab ich auf alle Fälle an deinem Webpart! Kann es denn auch mit Mehrfach-Lookup-Feldern umgehen? Also wie in meinem Beispiel mit mehreren Gruppen pro Schulung? Wenn ja dann ist das ja echt super!

Zu deinem Problem mit den IDs: ich hab da mal was gelesen über eine "Zwischenseite, die man nach einem Formular aufruft und die alle Werte des Elements beinhaltet". Ich weiß jetzt nicht, ob es das ist, was du suchst, aber hier mal der Link:
http://mdasblog.wordpress.com/2009/06/12/redirect-to-another-page-from-newform-aspx-with-the-new-items-id/

Grüßle Kiera

Ohne Rang
10 Beiträge
Medith Als Antwort am 19 Okt. 2009 15:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

So hab mein Webpart nun soweit fertig. Das einbinden in die Form ist ein bisschen Tricky. Aber es tut endlich.

Dieses Webpart hab ich speziell für Mehrfach-Lookup-Feldern "entwickelt" Es kann auch als einfaches Listview dienen aber ist ja uninterresant. Bevor ich hier den ganzen Quellcode poste und man hier ne halbe Stunde scroolen muss, könnte mir jemand verraten wie man so ein Spoiler oder son ein Textfeld mit Scroolbalken einbindet? Sowas hab ich hier schon mehrfach gesehen. Also nicht im Forum aber in den Blogs. Müsste ja auch Funktionieren. Wäre für alle Leser angenehmer.

 

Gruß Medith