So for this example I have a SQL database that I am pulling into an external content type called OfficeLocations. From this external content type I have created a SharePoint list that is referencing it. The issue I ran into is that the GoogleMapLink text coming from SQL was in a NVARCHAR format (which was System.String on the external content type and Single line of text for the column) and you cannot modify those columns.
This left me with a list that had a link but it was not clickable:
Annoying right? So what do we do? Let’s mess with the XSL template of the item and see what happens…so I popped into SharePoint designer and created a view off of the SharePoint list and modified the XSL template of the GoogleMapLink column to use the string field as the href of the <a> tag and supplied my own text to give the link a more user friendly readable URL.
To the code (the bolded elements are the only additions I made):
<xsl:template name="FieldRef_Text_body.GoogleMapLink" ddwrt:dvt_mode="body" match ="FieldRef[@Name='GoogleMapLink']" mode="Text_body" ddwrt:ghost="hide"> <xsl:param name="thisNode" select="."/> <xsl:variable name="currentValue" select="$thisNode/@*[name()=current()/@Name]" /> <xsl:choose> <xsl:when test="@AutoHyperLink='TRUE'"> <xsl:value-of select="$thisNode/@*[name()=current()/@Name]" disable-output-escaping ="yes"/> </xsl:when> <xsl:otherwise> <strong><xsl:element name="a"></strong> <strong> <xsl:attribute name="href"></strong> <xsl:value-of select="$thisNode/@*[name()=current()/@Name]"/> <strong> </xsl:attribute></strong> <strong> <xsl:text>Link</xsl:text></strong> <strong> </xsl:element></strong> </xsl:otherwise> </xsl:choose> </xsl:template>
This created clickable links titled “Link” on the list itself. You can see the results below:
Much cleaner, right? If you wanted the full link you could do that too. Hope that helps.