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.




Modal Dialog mit Callback im Webpart

Geprüfte Antwort Dieser Beitrag hat 7 Antworten

Ohne Rang
242 Beiträge
Peter Oswald erstellt 11 Juni 2013 11:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

Anforderung in einem Visual-Studio-Webpart:

  • Benutzer klickt auf Button
  • Eine codierte Plausiblitätsprüfung läuft ab. Schlägt diese fehl, öffnet sich ein Pop-up-Fenster, in dem zusätzlichen Information eingegeben werden kann.
  • Schließen des Popup übernimmt die zusätzlichen Information in das Parent Window

Meine Ausgrabungen haben bisher zu solchen Fundstellen geführt wie

Solche Dinge wie http://devspoint.wordpress.com/2011/04/28/open-the-sharepoint-2010-modal-dialog/ bekomme ich zwar prinzipiell zum Laufen, aber wie mache ich das, dass ich die Eingabe-Daten aus dem Modal-Window übernehmen kann?

Vielleicht so:

http://www.learningsharepoint.com/2011/08/26/pass-value-from-modal-dialog-to-the-calling-page-sharepoint-2010/

??

VG

P.

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 11 Juni 2013 12:09
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Im Prinzip genau so, wie in Deinem letzten link beschrieben.

Beim Öffnen des Dialogs gibst Du einen Callback mit, also eine JavaScript function, die dann beim Schließen aufgerufen wird. In der Seite, die im Dialog dargestellt wird, baust Du javaScript ein, das den Rückgabewert des Dialogs setzt. In der Callback-Funktion wertest Du diese Rückgabewerte aus.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
242 Beiträge
Peter Oswald Als Antwort am 11 Juni 2013 12:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

hm, soweit die Theorie, nur leider liefert die

function ModalCancel_click() {
        SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.cancel, 'Cancel clicked');
    }

den Fehler

Microsoft JScript runtime error: Unable to get value of the property 'cancel': object is null or undefined

!?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 11 Juni 2013 12:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hast Du keinen Debugger? Schreibe das erste C groß: DialogResult.Cancel

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
242 Beiträge
Peter Oswald Als Antwort am 11 Juni 2013 13:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Und hast Du kein MSDN? ;-)

 Also bitte, auf den o. g. Fehler kommt man ja auch nur, wenn man im Debug-Mode ist, und die Definition vom Cancel-Wert ist ja lt. http://msdn.microsoft.com/en-us/library/ff409060(v=office.14).aspx tatsächlich "SP.UI.DialogResult.cancel" - nicht zu verwechseln mit dem Windows-Forms Dialog.Result!

Ich vermute mal, dass die Umsetzung der Enumeration nicht geht - warum auch immer, schließlich kommt der Fehler ja aus den Tiefen von sp.js, was beweist, dass der ScriptLink funktioniert... Mal sehen, ob ich mit folgender Lösung weiterkomme

http://stackoverflow.com/questions/8901387/commonmodaldialogclosesp-ui-dialogresult-ok-somevalue-throws-error

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 11 Juni 2013 14:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mea maxima culpa...

Ich schaue ehrlich gesagt selten in die MSDN, weil dort eh das meiste gar nicht oder nur unzureichend dokumentiert ist (und manchmal sogar falsch). Meist bevorzuge ich deshalb den Debugger. Auch wenn MSDN die einzige offizielle Quelle ist. Und außerdem hätte ich jetzt schwören können, daß MS das Cancel großschreibt (wie OK), obwohl es den Gepflogenheiten von javaScript widerspricht.

Warum es bei Dir nicht geht, kann ich auch nicht sagen, aber Du mußt kein SP.UI.DialogResult verwenden, sondern kannst auch jeden anderen beliebigen Wert verwenden.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
242 Beiträge
Peter Oswald Als Antwort am 11 Juni 2013 14:09
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, ich hätte auch schwören können, dass dieses 'cancel' groß geschrieben wird ;-), aber wahrscheinlich hat der Dödel-Programmierer von Microdoof es so codiert und man hat es ausgeliefert, bevor man es gemerkt hat, uns schwups haben wir jetzt ein kleines 'c' an der Backe.

Nachdem ich die Dialog-Results durch andere Rückgabe-Werte ersetzt habe, hatte noch ein kleines Problem mit der Control-Ermittlung per GetValueByID(), aber unter Hilfe von

http://stackoverflow.com/questions/5039544/getting-textbox-value-in-javascript

ist das auch gelöst und jezz funzt es erstmal. Vielen Dank für die Unterstützung.

Ohne Rang
242 Beiträge
Peter Oswald Als Antwort am 12 Juni 2013 10:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Bei der Callback-Methode vom javascript muss man noch darauf achten, dass man das getElementById richtig parametrisiert

=> document.getElementById('<%= txtBoxTest.ClientID %>')

nimmt man nur document.getElementById('txtBoxTest') fällt man auf die Nase, so wie ich ;-)