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 aus eigenem Bearbeiten Symbol aufrufen

Geprüfte Antwort Dieser Beitrag hat 9 Antworten

Ohne Rang
221 Beiträge
MiriMar erstellt 12 Aug. 2013 09:55
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

Folgendes Problem macht mich seit längerem wahnsinnig: Ich möchte in einer Spalte ein eigenes 'Bearbeiten' Symbol zur Verfügung stellen, dass nicht das normale Formular aufruft, sondern eine für jedes Element per WF erstellte URL (Hintergrund: In dem Bearbeiten Formular ist eine Listview integriert, die ich über die URL filtere). Das Symbol über ein Rich Text Field mit der entsprechenden URL zu erstellen, das hab ich schon hinbekommen. Aber ich hätte natürlich gerne, dass sich die URL jetzt noch im gewohnten Modal Dialog öffnet. Das will aber einfach nicht. Ich müsste dafür ja in dem Feld bei onclick javascript ausführen (!?!), was aber bei Rich Text Feldern offenbar nicht geht.

Jetzt meine Frage: Geht das überhaupt? Geh ich an die Sache vielleicht völlig falsch ran? Hab ich mal wieder ein Brett vorm Kopp?

Ich wäre für jede Hilfe dankbar;)

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Aug. 2013 10:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du mußt tatsächlich noch JavaScript mit einbauen, was in einem Rich-Text-Feld nicht geht. Du kannst aber die Ansicht in SharePoint Designer bearbeiten und dort den Link an ein beliebiges Feld hängen (oder gleich ein normales Hyperlinkfeld verwenden). Für das Script suche mal nach SP.UI.ModalDialog

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
221 Beiträge
MiriMar Als Antwort am 12 Aug. 2013 12:35
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Andi, du bist mal wieder mein Held;) Jetzt muss ich nur noch herausfinden, wie ich in SP.UI.ModalDialog.ShowPopupDialog(URL) eine dynamische Url reinbekomm...

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Aug. 2013 12:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wenn Du bereits einen Link hast, also ein <a href="URL">, dann kannst Du Dich im onclick mittels "this" auf den Link (das a-Tag) beziehen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
221 Beiträge
MiriMar Als Antwort am 12 Aug. 2013 13:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hm, irgendwie steh ich da mal wieder aufm Schlauch. Ich generier den Link ja per Workflow, hab ihn also in einer anderen Spalte als normaler Text drin. Das sieht dann so aus:

<xsl:template name="FieldRef_Note_body.Bestellung_x0020_bearbeiten_x002" ddwrt:dvt_mode="body" match="FieldRef[@Name='Bestellung_x0020_bearbeiten_x002']" mode="Note_body" ddwrt:ghost="hide">
       <xsl:param name="thisNode" select="."/>
    <div dir="{@Direction}" class="ms-rtestate-field">
      <xsl:value-of select="$thisNode/@*[name()=current()/@Name]" disable-output-escaping="yes"/>
    </div>
  </xsl:template> 

In meiner eigentlichen Spalte mit dem 'Bearbeiten' Icon steht bisher:

<xsl:template name="FieldRef_Image_URL_body.Bearbeiten_x0020_Icon" ddwrt:dvt_mode="body" match="FieldRef[(@Format='Image') and @Name='Bearbeiten_x0020_Icon']" mode="URL_body" ddwrt:ghost="" xmlns:ddwrt2="urn:frontpage:internal">
       <xsl:param name="thisNode" select="."/>
       <xsl:variable name="url" select="$thisNode/@*[name()=current()/@Name]" />
       <xsl:variable name="desc" select="$thisNode/@*[name()=concat(current()/@Name, '.desc')]" />
       <xsl:choose>
          <xsl:when test="$url=''">
      </xsl:when>
          <xsl:otherwise>
        <img src="{$url}" alt="{$desc}" onclick="javascript:SP.UI.ModalDialog.ShowPopupDialog('Da soll ja jetzt die richtige, dynamisch generierte URL rein');"/>
      </xsl:otherwise>
       </xsl:choose>
  </xsl:template> 

Also kein <a href> nirgendwo. ich bin ehrlich, ich hätte jetzt auch keine Ahnung, wie ich das entsprechende Tag in das XSLT erstellen könnte...

Wie krieg ich jetzt den Wert der einen Spate als Wert in die Klammer? Mit @ funktionierts jedenfalls schonmal nicht...

Vielen Vielen VIELEN Dank übrigens und sorry für die noob Fragen, um den ganzen XSLT Kram hab ich mich bisher erfolgreich drumrumgedrückt...

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Aug. 2013 13:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich dachte Du hättest bereits irgendwo die URL ;-)

Wenn ich mir das XSL so anschaue, dann hat SharePoint aber schon das Wichtigste für Dich bereit: es gibt sowohl eine variable $url als auch eine $desc (die wohl den Text zum Link enthält).

Du kannst so darauf zugreifen:

onclick="SP.UI.ModalDialog.ShowPopupDialog('{$url}');"

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
221 Beiträge
MiriMar Als Antwort am 12 Aug. 2013 13:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, ich hab die Url eben als Wert in einer anderen Spalte:)

Die Variable $Url führt hier leider nur zu dem Bildchen, also dem edit.gif. Ich fürchte, ich bin das einfach falsch angegangen. Ich krieg meine Spalte mit der URL als Text wohl einfach nicht als Wert in das onlick eines Bild-Feldes. Beziehungsweise mir fehlt die zündende Idee, wie ich im XSL eine Variable auf meinen Spaltenwert festlege...

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Aug. 2013 13:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Da werde ich Dir jetzt nicht mehr wirklich helfen können, weil ich ja Deine Daten nicht kenne. Ich sehe aber zwei Möglichkeiten: entweder Du manipilierst stattdessen die Spalte, in der die URL steht und fügst dort das Bild als manuelles <img> ein. Oder Du suchst eben doch an der Stelle, an der wir gerade sind, die richtige URL zu finden. Grundsätzlich hast Du in $thisNode das aktuelle Element, für das gerade eine Tabellenzeile generiert wird. Über $thisNode/@Spaltenname kannst Du auf die einzelnen Felder zugreifen, wobei @Spaltenname immer der interne Name ist, der nicht zwingend mit dem sichtbaren Namen übereinstimmen muß.

Baue doch einfach mal ein paar <xsl:value-of select="$thisNode/@Spalte1" /> ein, um zu sehen was Dir zur Verfügung steht. Das erzeugt keinen Fehler, wenn es eine Spalte nicht gibt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
221 Beiträge
MiriMar Als Antwort am 12 Aug. 2013 15:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Da liegst du falsch, du hast mir damit schon ein enormes Stück weitergeholfen!! Mithilfe von xsl: variable und $thisNode/@Spalte kann ich mir den Link jetzt tatsächlich in die Klammer ziehen!

Gehen tuts trotzdem nicht;)) Die URL ist zu lang für ein einzeiliges Textfeld und bei einem mehrzeiligen macht er je nach Art komische Sachen mit meiner URL. Bei Nur-Text hab ich z.B. das Problem, dass er mir trotzdem den ersten Teil des Textes als Hyperlink formatiert und daraus dann für meine xsl Variable ein natürlich unnutzbarer Link mit <href und </a> erstellt wird. Bei Rich text nimmt er dafür auch die <div> Teile mit in die Url, das geht dann natürlich auch nicht...

Aber trotzdem vielen Vielen Dank! Ich bin der Lösung sicher ein riesiges Stück näher gekommen und mein Kopf kann sich endlich wieder mit einem anderen SP-Mysterium beschäftigen;)

Ohne Rang
221 Beiträge
MiriMar Als Antwort am 12 Aug. 2013 15:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

@Edit:

Wohooo, es geht! Ich hatte in der generierten URL auch das http: mit drin, das mag das Textfeld wohl nicht. Habs gerade rausgenommen, nochmal probiert und es geht!!!!

Ich danke dir wirklich 100.000 Mal, das hat mich einen riesigen Schritt weitergebracht!!!