image linking to document
I have created a custom module. This includes an image field + a document link field. I would like users to be able to click on the image within list view to open the document is this possible?
Hi Martin,
What I would recommend is to use an external template which will allow you to use code-behind file and determine the logic for title and Image size. For more information on using external templates in Sitefinity, please check this blog post.
Here is a sample template for one of my modules made to be like yours demonstrating this functionality, please feel free to modify it as you find appropriate.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="OpenAccessDataProvider,00e728290c074858805c8efeb8624555.ascx.cs" Inherits="SitefinityWebApp.Templates.MyDocs.OpenAccessDataProvider_00e728290c074858805c8efeb8624555" %><%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit" Assembly="Telerik.Sitefinity" %><%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.ContentUI" Assembly="Telerik.Sitefinity" %><%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.Comments" Assembly="Telerik.Sitefinity" %><%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.Fields" Assembly="Telerik.Sitefinity" %><%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI" Assembly="Telerik.Sitefinity" %><%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %><telerik:RadListView ID="dynamicContentListView" ItemPlaceholderID="ItemsContainer" runat="server" EnableEmbeddedSkins="false" EnableEmbeddedBaseStylesheet="false"> <LayoutTemplate> <ul class="sfitemsList sfitemsListTitleDateTmb"> <asp:PlaceHolder ID="ItemsContainer" runat="server" /> </ul> </LayoutTemplate> <ItemTemplate> <li class="sfitem sfClearfix"> <asp:HyperLink ID="ImageLink" runat="server" Target="_blank" /> <h2 class="sfitemTitle"> <sf:DetailsViewHyperLink ID="DetailsViewHyperLink" TextDataField="Title" runat="server" /> </h2> <sf:FieldListView ID="PublicationDate" runat="server" Format="PublicationDate.ToLocal():MMM d, yyyy, HH:mm tt" WrapperTagName="div" WrapperTagCssClass="sfitemPublicationDate" /> </li> </ItemTemplate></telerik:RadListView><sf:Pager id="pager" runat="server"></sf:Pager><asp:PlaceHolder ID="socialOptionsContainer" runat="server"></asp:PlaceHolder>using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Telerik.Web.UI;using Telerik.Sitefinity.Model;using Telerik.Sitefinity.DynamicModules.Model;using Telerik.Sitefinity.Model.ContentLinks;using Telerik.Sitefinity;using Telerik.Sitefinity.Web.UI.ContentUI;namespace SitefinityWebApp.Templates.MyDocs public partial class OpenAccessDataProvider_00e728290c074858805c8efeb8624555 : System.Web.UI.UserControl protected void Page_Load(object sender, EventArgs e) this.dynamicContentListView.ItemDataBound += new EventHandler<Telerik.Web.UI.RadListViewItemEventArgs>(dynamicContentListView_ItemDataBound); void dynamicContentListView_ItemDataBound(object sender, Telerik.Web.UI.RadListViewItemEventArgs e) if (e.Item.ItemType == RadListViewItemType.DataItem || e.Item.ItemType == RadListViewItemType.AlternatingItem) var dataItem = e.Item as RadListViewDataItem; if (dataItem.DataItem != null) var item = dataItem.DataItem as DynamicContent; if (item != null) var img = item.GetValue<ContentLink[]>("DocImage").FirstOrDefault().ChildItemId; var imgUrl = App.WorkWith().Image(img).Get().ThumbnailUrl; var link = e.Item.FindControl("ImageLink") as HyperLink; if (link != null) link.ImageUrl = imgUrl;
var docItem = Guid.Empty; try docItem = item.GetValue<ContentLink[]>("DocLink").FirstOrDefault().ChildItemId; catch if (docItem != null && docItem != Guid.Empty) var docUrl = App.WorkWith().Document(docItem).Get().MediaUrl; link.NavigateUrl = docUrl;