Can not load images from custom module to custom control
Hello there,
i have created custom module for news listing, and also custom control to show news in tabs,
everything is working fine except images, i am not able to load images at all i have tried alot of changes, but none of them worked yet here is my repeater code
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="CustomTabs.ascx.cs" Inherits="Custom_Widgets_CustomTabs" %>
<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Web.UI" TagPrefix="sf" %>
<%@ 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" %>
<!-- News Tab Start -->
<
div
id
=
"tabs-1"
aria-labelledby
=
"ui-id-1"
class
=
"ui-tabs-panel ui-widget-content ui-corner-bottom"
role
=
"tabpanel"
aria-expanded
=
"true"
aria-hidden
=
"false"
>
<
asp:Repeater
ID
=
"rpt_news"
runat
=
"server"
OnItemDataBound
=
"rpt_news_ItemDataBound"
>
<
ItemTemplate
>
<
div
class
=
"mid-left"
>
<
asp:Image
ID
=
"NewsImage"
runat
=
"server"
/>
<
h1
><%# Eval("Title")%></
h1
>
<
span
class
=
"date"
><
sf:FieldListView
ID
=
"PublicationDate"
runat
=
"server"
Format
=
"PublicationDate.ToLocal():MMM d, yyyy, HH:mm tt"
/></
span
>
<
span
class
=
"des"
>
<
asp:Label
ID
=
"lbldescription"
runat
=
"server"
Text='<%# (Eval("content").ToString().Length > 150 ? Eval("content").ToString().Substring(0,150)+"..." : Eval("content")) %>'></
asp:Label
>
</
span
>
</
div
>
</
ItemTemplate
>
</
asp:Repeater
>
</
div
>
<!-- News Tab End -->
protected void Page_Load(object sender, EventArgs e)
rpt_news.DataSource = GetLastsNews();
rpt_news.DataBind();
rpt_videos.DataSource = GetLatestVideos();
rpt_videos.DataBind();
public IQueryable<
DynamicContent
> GetLastsNews()
DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
Type newsListingType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.NewsList.NewsListing");
var myCollection = dynamicModuleManager.GetDataItems(newsListingType)
.Where(i => i.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live && i.Visible == true);
return myCollection.Take(3).Skip(0).OrderBy(o => o.Id);
public void rpt_news_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
//// this one is giving erro unable to cast
Telerik.Sitefinity.Libraries.Model.Image newsImage = (Telerik.Sitefinity.Libraries.Model.Image)TypeDescriptor.GetProperties(e.Item.DataItem)["NewsImage"].GetValue(e.Item.DataItem);
var imageControl = (Image)e.Item.FindControl("NewsImage");
if (imageControl != null)
/// this one is showing error Object reference not set to an instance of an object.
var image = e.Item.DataItem as Telerik.Sitefinity.Libraries.Model.Image;
imageControl.ImageUrl = image.MediaUrl;
// i have just added 2 times this to show you that i have tried both but non of them working
imageControl.ImageUrl = newsImage.MediaUrl;
protected string GetImageUrl(object item)
var retval = string.Empty;
// ensure correct item type
var showcase = item as DynamicContent;
if (showcase == null) return retval;
// retrieve the Screenshot value and extract the first (and only) item
var contentLinks = (ContentLink[])showcase.GetValue("Screenshot");
ContentLink imageContentLink = contentLinks.FirstOrDefault();
// retrieve the image using the extracted items Id
LibrariesManager libraryManager = LibrariesManager.GetManager();
var image = libraryManager.GetImage(imageContentLink.ChildItemId);
if (image == null) return retval;
// return the image url to the template
retval = image.Url;
return retval;
<
sf:ImageAssetsField
runat
=
"server"
DataFieldName
=
"thumb"
IsThumbnail
=
"False"
DisplayMode
=
"read"
/>
Thanks to all i have resolved my issue my self as i do always :)
Hi Ashfaq,
Can you please share with us the solution to your problem so if anyone encounters it they have a reliable resource available. In my view the best way for you to upload images to a custom control is with Sitefinity's HtmlField. It allows you the same functionality that our content block does. All you need to do to use it is create a widget with designer and include the HtmlField in the designer. I have attached a simple designer that allows you to use the HtmlField as an image selector.
Regards,
Ivan D. Dimitrov
Telerik
Hello i had solved that issue via creating a function in code behind file at our custom control, and called that method inside control.ascx file where i have added a repeater & asp.net image control field to show the image here is the solution with example in my site
Get Images in custom control from Custom module image asset field