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.




Custom Field Type und RenderFieldForDisplay

Unbeantwortet Dieser Beitrag hat 13 Antworten

Ohne Rang
12 Beiträge
ToBo erstellt 18 März 2014 10:32
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe einen Custom Field Type, dieser funktioniert in Edit-Formularen einwandfrei.

Ich möchte aber auch in Display-Formularen eine spezielle Anzeige haben, ich kriege es einfach nicht hin, dass das RenderFieldForDisplay aufgerufen wird. Ich kann nur einen Breakpoint im Konstruktor setzen, es wird ansonsten kein Code aufgerufen, wenn der Modus 'Display' ist. Es wird einfach der physische Feldinhalt angezeigt.

Hat jemand einen Tip für mich ?

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 März 2014 11:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

In 2013 ist der bevorzugte Weg CSR (client side rendering): http://blogs.msdn.com/b/sridhara/archive/2013/07/26/custom-field-types-and-rendering-templates-correlation-with-the-new-server-render-property-of-the-listformwebpart.aspx

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
12 Beiträge
ToBo Als Antwort am 18 März 2014 12:10
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für den Tip, das bezieht sich aber wohl auf das ListViewWebpart.

Mit ging es um das Display-Formular ("Element anzeigen").

Habe das Problem inzwischen gelöst. Im Normalfall wird das Display-Formular mit xsl - Befehlen erzeugt. Ich brauche nur die entsprechenden Felder zu ersetzen mit FormField und ControlMode="Display" und schon geht es.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 März 2014 12:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="ToBo"]Danke für den Tip, das bezieht sich aber wohl auf das ListViewWebpart.

Mit ging es um das Display-Formular ("Element anzeigen")[/quote]

Das ListFormWebPart ist für die Ausgabe auf dem DispForm zuständig - es paßt also schon.

Schön, wenn Du eine Lösung gefunden hast. Ich wollte nur darauf hinweisen, daß es in 2013 einen anderen Weg gibt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
12 Beiträge
ToBo Als Antwort am 18 März 2014 12:55
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Variante mit dem CSR Render wäre natürlich gut, weil man an den Formularen nicht ändern müsste.

Habe das versuchen wollen, aber die Option gibt es bei mir nicht.

Ich habe gerade nochmal eine Seite mit Editions-Vergleich aufgerufen, demnach gibt es CSR auch bei der Foundation.

Da muss wohl noch was eingestellt werden für...

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 März 2014 13:26
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das gibt es eigentlich "von Haus aus", also ohne besondere Einstellungen. Wo hast Du denn geschaut?

Im Grunde reicht es, wenn Du bei einem Feld dessen JSLink-Eigenschaft setzt. Das Script entscheidet dann, wo es überall angewendet wird (NewForm, DispForm, EditForm, View) und SharePoint kümmert sich.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
12 Beiträge
ToBo Als Antwort am 18 März 2014 13:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe:

1) Display-Formular aufgerufen

2) Seite bearbeiten

3) Webpart bearbeiten

4) Sektion "Verschiedenes", dort gibt es nur:

   a) Beispieldaten (leer)

   b) XSL-Link (leer)

   c) Zwischenspeicherung der Datenansicht zulassen (checked)

   d) Timeout für Zwischenspeicherung der Datenansicht (Sekunden) (86400)

   e) Beim Laden der Seite erste Zeile an verbundene Webparts senden (checked)

Und das ist alles, keine weiteren Optionen zu sehen.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 März 2014 14:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Bist Du wirklich auf 2013? Ist das ein "altes" Web, das aus 2010 mirgriert wurde?

Aber wie auch immer: Du hast doch eh eine Solution, die Dein Custom Field bereitstellt. Da möchtest Du doch nicht nachträgliche manuelle Anpassungen machen müssen, damit alles wie gewünscht funktioniert. Deshalb würde ich den oben vorgeschlagenen Weg über JSLink beim Feld gehen. Das habe ich schon öfter erfolgreich eingesetzt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
12 Beiträge
ToBo Als Antwort am 18 März 2014 14:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Stimmt beides...ich bin auf 2013, allerdings wurde das aus 2010 migriert.

Habe mal eine "neue" Seite angeschaut und siehe da, die Optionen sind vorhanden.

Also...anschauen, wie das mit JSlink in VS gemacht wird....sieht etwas kompliziert aus auf den Webseiten, wo das beschrieben ist.

Eigentlich will ich ja nur, dass mein C# Code in RenderFieldForDisplay im Display-Formular und auch im xsltlstviewwebpart benutzt wird. Reiner Javascript-Code nützt mir nämlich auch nicht soviel, weil mein Feld den anzuzeigenden Inhalt aus einer anderen SQL-Tabelle per c# SQL-Funktionen holt.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 März 2014 15:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="ToBo"]Reiner Javascript-Code nützt mir nämlich auch nicht soviel, weil mein Feld den anzuzeigenden Inhalt aus einer anderen SQL-Tabelle per c# SQL-Funktionen holt.[/quote]

Macht es das jeweils zur Laufzeit, also immer dann, wenn der Wert benötigt wird? Oder speicherst Du den Wert in irgendeiner Form im Feld zwischen und willst nur die Ausgabe aufbereiten? Dann kann JavaScript nämlich schon helfen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
12 Beiträge
ToBo Als Antwort am 18 März 2014 15:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Zur Laufzeit, der Inhalt der SQL-Tabelle könnte geändert sein.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 März 2014 15:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

OK, dann aknn ich da nichts mehr zu sagen.

Nur aus Interesse: warum machst Du das mit einem eigenen Feldtyp und nicht mit BCS?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
12 Beiträge
ToBo Als Antwort am 18 März 2014 15:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Gute Frage...BCS habe ich mit Foundation nicht eingerichtet bekommen, das ging an einer Stelle immer nicht weiter.

Und das Feld soll Spalte einer SP-Liste sein, aber in einer Combobox eine Auswahl aus einer SQL-Tabelle (die nicht mit der Liste verbunden sein soll) als Werte zur Auswahl stellen.

So hat sich das ergeben...

Beispiel:

Habe eine externe SQL-Kontaktetabelle mit uniquen IDs. In der Sharepoint-Liste sollen die gewählten IDs gespeichert sein, der Nutzer soll aber "Nachname, Vorname" sehen. In der Definition der Spalte trage ich die Felder für Nachname, Vorname ein (und was sonst nötig für den SQL-Zugriff ist) und das war's.

Funktioniert auch gut und performant. Und in die Display-Formlare FormFields reinzumachen, ist ja auch nicht der Hit.

ich habe mir ein kleines "Codeschnipsel"-Helper-Programm geschrieben, dass erzeugt mir den FormField-Code in nullkommanichts, diese Funktion hat MS ja im Designer vergessen.

Nur für die Dataformwebparts (Listenwebparts) auf Websiten muss ich mir noch was überlegen.

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 18 März 2014 15:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das hätte man grundsätzlich alles mit BCS machen können - auch mit Foundation. Aber wenn Du jetzt schon eine Lösung hast...

Viele Grüße
Andi
af @ evocom de
Blog