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;