image linking to document

Posted by Community Admin on 04-Aug-2018 16:20

image linking to document

All Replies

Posted by Community Admin on 16-Sep-2012 00:00

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?

Posted by Community Admin on 20-Sep-2012 00:00

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>

and the codebehind
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;
                            
                        
 
                    
                
            
 
        
    


Regards,
Randy Hodge
the Telerik team
Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items

This thread is closed