Convert News List to Dropdown
I need to display a list of news items as a dropdown. I am trying to create a news list template for use in the control when needed. I do not really care if it is a dropdown or a combo box as long as it acts like a dropdown (is the combobox lockable to prevent typing?). I know the dropdown can use templates, but I am getting something wrong (error parsing template).
<%@ Control Language="C#" %>
<%@ 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" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Modules.Comments.Web.UI.Frontend" TagPrefix="comments" %>
<%@ Import Namespace="Telerik.Sitefinity.Web.UI" %>
<%@ Import Namespace="Telerik.Sitefinity.Modules.Comments" %>
<
sf:SitefinityLabel
id
=
"title"
runat
=
"server"
WrapperTagName
=
"div"
HideIfNoText
=
"true"
HideIfNoTextMode
=
"Server"
/>
<
telerik:RadListView
ID
=
"NewsList"
ItemPlaceholderID
=
"ItemsContainer"
runat
=
"server"
EnableEmbeddedSkins
=
"false"
EnableEmbeddedBaseStylesheet
=
"false"
>
<
LayoutTemplate
>
<
telerik:RadDropDownList
>
<
ItemTemplate
>
<
sf:DetailsViewHyperLink
ID
=
"DetailsViewHyperLink1"
TextDataField
=
"Title"
ToolTipDataField
=
"Description"
data-sf-field
=
"Title"
data-sf-ftype
=
"ShortText"
runat
=
"server"
/>
</
ItemTemplate
>
<
Items
>
<
asp:PlaceHolder
ID
=
"ItemsContainer"
runat
=
"server"
/>
</
Items
>
</
telerik:RadDropDownList
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
telerik:RadDropDownListItem
runat
=
'server'
data-sf-provider='<%# Eval("Provider.Name")%>' data-sf-id='<%# Eval("Id")%>' data-sf-type="Telerik.Sitefinity.News.Model.NewsItem" >
</
telerik:RadDropDownListItem
>
</
ItemTemplate
>
</
telerik:RadListView
>
don't know if i am doing this correctly, but I have made a little progress with the below.
I know that I should not be putting the Details Hyperlink object in the option like that, but that is how I get the text to show for the option (it does not rending anything but text). Now I need to be able to get the URL the object would normally render. Any help you can give would be greatly appreciated!
<
telerik:RadListView
ID
=
"NewsList"
ItemPlaceholderID
=
"ItemsContainer"
runat
=
"server"
EnableEmbeddedSkins
=
"false"
EnableEmbeddedBaseStylesheet
=
"false"
>
<
LayoutTemplate
>
<
select
class
=
"sfnewsList sfnewsListTitleDateSummary sflist"
onchange
=
"location = this.value;"
>
<
asp:PlaceHolder
ID
=
"ItemsContainer"
runat
=
"server"
/>
</
select
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
option
runat
=
"server"
class
=
"sfnewsListItem sflistitem"
TextDataField
=
"Title"
data-sf-field
=
"Title"
data-sf-ftype
=
"ShortText"
data-sf-provider='<%# Eval("Provider.Name")%>' data-sf-id='<%# Eval("Id")%>' data-sf-type="Telerik.Sitefinity.News.Model.NewsItem" >
<
sf:DetailsViewHyperLink
ID
=
"DetailsViewHyperLink1"
TextDataField
=
"Title"
ToolTipDataField
=
"Description"
data-sf-field
=
"Title"
data-sf-ftype
=
"ShortText"
runat
=
"server"
/>
</
option
>
</
ItemTemplate
>
</
telerik:RadListView
>
<
sf:Pager
id
=
"pager"
runat
=
"server"
></
sf:Pager
>
You can receive url of news like that: <%# Eval("UrlName")%>">
You can receive news title: <%# Eval("Title")%>
For example, if you want to render option tag with news url inside value attribute, you need to use it like that
<
ItemTemplate
>
<
option
value
=
"<%# Eval("
UrlName")%>">
<%# Eval("Title")%>
</
option
>
</
ItemTemplate
>
Hi Victor,
Thank you so much for the help! It got me a lot closer. So the remaining issue is the URL. The UrlName gives just the last part. I am a little closer with the below. However, I need to get the parent UrlName. I have seen references to Parent.UrlName, but the template chokes when I stick that in an eval. Is there an easy way to get it?
<
telerik:RadListView
ID
=
"NewsList"
ItemPlaceholderID
=
"ItemsContainer"
runat
=
"server"
EnableEmbeddedSkins
=
"false"
EnableEmbeddedBaseStylesheet
=
"false"
>
<
LayoutTemplate
>
<
select
class
=
"sfnewsList sfnewsListTitleDateSummary sflist"
onchange
=
"location = this.value;"
>
<
option
label
=
"Select a topic..."
/>
<
asp:PlaceHolder
ID
=
"ItemsContainer"
runat
=
"server"
/>
</
select
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
option
runat
=
"server"
value='<%# Eval("PublicationDate", "0:yyyy/MM/dd") + "/" + Eval("Urlname") %>' label='<%# Eval("Title")%>' class="sfnewsListItem sflistitem" TextDataField="Title" data-sf-field="Title" data-sf-ftype="ShortText" data-sf-provider='<%# Eval("Provider.Name")%>' data-sf-id='<%# Eval("Id")%>' data-sf-type="Telerik.Sitefinity.News.Model.NewsItem" />
</
ItemTemplate
>
</
telerik:RadListView
>
So I finally came up with a solution with a little help from Telerik. I am posting it here in case it is of benefit to anyone else looking to do the same or similar. The hard thing for me to find was ItemDefaultUrl. Once I figured out how to get that, the rest came together.
<%@ Control Language="C#" %>
<%@ 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" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Modules.Comments.Web.UI.Frontend" TagPrefix="comments" %>
<%@ Import Namespace="Telerik.Sitefinity.Web.UI" %>
<%@ Import Namespace="Telerik.Sitefinity.Modules.Comments" %>
<
div
class
=
'newsList'
>
<
div
class
=
'newsListTop'
> </
div
>
<
div
class
=
'newsListBody'
>
<
div
class
=
'newsListTitle'
><
span
class
=
'placeHolder'
/></
div
>
<
div
class
=
'newsListDesc'
><
span
class
=
'placeHolder'
/></
div
>
<
telerik:RadListView
ID
=
"NewsList"
ItemPlaceholderID
=
"ItemsContainer"
runat
=
"server"
EnableEmbeddedSkins
=
"false"
EnableEmbeddedBaseStylesheet
=
"false"
>
<
LayoutTemplate
>
<
select
class
=
"sfnewsList sfnewsListTitleDateSummary sflist newsListDropDown"
onchange
=
"location = this.value;"
>
<
option
label
=
"Select a topic..."
/>
<
asp:PlaceHolder
ID
=
"ItemsContainer"
runat
=
"server"
/>
</
select
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
option
runat
=
"server"
value='<%# Request.Url.AbsoluteUri + Eval("ItemDefaultUrl") %>' label='<%# Eval("Title")%>' class="sfnewsListItem sflistitem" TextDataField="Title" data-sf-field="Title" data-sf-ftype="ShortText" data-sf-provider='<%# Eval("Provider.Name")%>' data-sf-id='<%# Eval("Id")%>' data-sf-type="Telerik.Sitefinity.News.Model.NewsItem" />
</
ItemTemplate
>
</
telerik:RadListView
>
<
sf:Pager
id
=
"pager"
runat
=
"server"
></
sf:Pager
>
</
div
>
</
div
>
Hi Brian,
Thank you for the shared solution with the community.
Regards,
Svetoslav Manchev
Telerik