My Listview and RadDatapager is not working. I am doing development in sitefinity. It is a Control (ASCX Page)
Searching for events. Search is working fine. I am stuck on two things, Datapager and the first result is always expanded in Radlistview.
I am showing my results using this example
http://demos.telerik.com/aspnet-ajax/listview/examples/appearancestyling/customlayouts/defaultcs.aspx
I implemented the telerik:RadDataPager. The Pager works fine for the first set of records. When i click NEXT no records are displayed and the RadDataPager also disappears. I tried to Rebind the Listview in PreRender but still it is not working.
My second question is When ever the results come back the first result is always expanded. Which i don't want. I know you can control this in RadGrid with the Expandable column(RadGrid.ExpandCollapseCommandName).
I am not able to do it in Radlistview.
Here is my Code
Here is my CodeBehind
Searching for events. Search is working fine. I am stuck on two things, Datapager and the first result is always expanded in Radlistview.
I am showing my results using this example
http://demos.telerik.com/aspnet-ajax/listview/examples/appearancestyling/customlayouts/defaultcs.aspx
I implemented the telerik:RadDataPager. The Pager works fine for the first set of records. When i click NEXT no records are displayed and the RadDataPager also disappears. I tried to Rebind the Listview in PreRender but still it is not working.
My second question is When ever the results come back the first result is always expanded. Which i don't want. I know you can control this in RadGrid with the Expandable column(RadGrid.ExpandCollapseCommandName).
I am not able to do it in Radlistview.
Here is my Code
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Events.ascx.cs" Inherits="SitefinityWebApp.UserControls.Events" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<
head
>
<
telerik:RadCodeBlock
ID
=
"RadCodeBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function pageLoad(sender, args) {
var productsTable = $get("products");
var firstRow;
if (productsTable.tBodies) {
firstRow = productsTable.tBodies[0].rows[0];
}
else {
firstRow = productsTable.rows[0];
}
var expandImg = firstRow.cells[0].getElementsByTagName("IMG")[0];
if (expandImg.src.indexOf("Plus") > -1) {
toggleOrderDetails(expandImg);
}
}
function toggleOrderDetails(sender) {
var thisRow = sender.parentNode.parentNode;
var nextRow = getNextRowSibling(thisRow);
if (nextRow && nextRow.className == "orders") {
if (nextRow.style.display == "none") {
nextRow.style.display = "";
sender.src = sender.src.replace("Plus", "Minus");
thisRow.className = "expanded";
}
else {
nextRow.style.display = "none";
sender.src = sender.src.replace("Minus", "Plus");
thisRow.className = "";
}
}
}
function getNextRowSibling(row) {
var ret = row;
do {
ret = ret.nextSibling;
} while (ret && ret.tagName != "TR");
return ret;
}
</
script
>
</
telerik:RadCodeBlock
>
<
style
type
=
"text/css"
>
.wrapper
{
width: 608px;
border: 1px solid #5D8CC9;
font-family: "segoe ui" ,arial,sans-serif;
font-size: 12px;
line-height: 16px;
}
.products
{
empty-cells: show;
table-layout: fixed;
border-collapse: collapse;
width: 100%;
}
.products th
{
background-color: #C3D8F1;
padding: 5px;
border-bottom: 1px solid #5D8CC9;
color: #00156E;
text-align: left;
width: 130px;
}
.products td
{
border: 1px solid #D0D7E5;
border-style: none none solid none;
padding: 4px 7px 3px 7px;
}
.products th.expand, .products td.expand
{
width: 20px;
padding: 0 0 0 3px;
}
.products tr td.expand
{
border-color: #ECF4FF;
}
.products tr.expanded td, .orders td.expand
{
background-color: #ECF4FF;
}
.products tr td.expand img
{
cursor: pointer;
}
.orders td
{
padding: 0;
width: auto;
}
.orders table
{
table-layout: fixed;
border-collapse: collapse;
width: 100%;
}
.orders table td
{
width: 130px;
padding: 4px 7px 3px 7px;
padding: 3px 3px 3px 7px;
}
.orders table tr:last-child td
{
border-bottom: none;
}
</
style
>
</
head
>
<
body
>
<
telerik:RadScriptManager
runat
=
"server"
ID
=
"RadScriptManager1"
/>
<
telerik:RadFormDecorator
ID
=
"QsfFromDecorator"
runat
=
"server"
DecoratedControls
=
"All"
EnableRoundedCorners
=
"false"
/>
<
div
style
=
"width: 610px;"
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
runat
=
"server"
Skin
=
"Black"
>
</
telerik:RadAjaxLoadingPanel
>
<
div
>
<
table
>
<
tr
>
<
td
>
Location
</
td
>
<
td
>
Event Type
</
td
>
<
td
>
Start Date
</
td
>
<
td
>
End Date
</
td
>
</
tr
>
<
tr
>
<
td
>
<
telerik:RadListBox
ID
=
"citySelector"
runat
=
"server"
>
</
telerik:RadListBox
>
</
td
>
<
td
>
<
telerik:RadListBox
ID
=
"tagSelector"
runat
=
"server"
>
</
telerik:RadListBox
>
</
td
>
<
td
>
<
telerik:RadDatePicker
ID
=
"RadDatePicker1"
runat
=
"server"
>
<
Calendar
ID
=
"Calendar1"
runat
=
"server"
EnableKeyboardNavigation
=
"true"
>
</
Calendar
>
<
DateInput
ID
=
"DateInput2"
ToolTip
=
"Date input"
runat
=
"server"
>
</
DateInput
>
</
telerik:RadDatePicker
>
</
td
>
<
td
>
<
telerik:RadDatePicker
ID
=
"RadDatePicker2"
runat
=
"server"
>
<
Calendar
ID
=
"Calendar2"
runat
=
"server"
EnableKeyboardNavigation
=
"true"
/>
<
DateInput
ID
=
"DateInput1"
ToolTip
=
"Date input"
runat
=
"server"
/>
</
telerik:RadDatePicker
>
<
telerik:RadButton
ID
=
"Submit"
runat
=
"server"
Text
=
"Search"
OnClick
=
"Submit_Click"
/>
</
td
>
</
tr
>
</
table
>
<
br
/>
<
br
/>
<
br
/>
<
telerik:RadListView
ID
=
"RadListView1"
runat
=
"server"
ItemPlaceholderID
=
"ProductTitlePlaceHolder"
OnPreRender
=
"Pager_Pre"
OnPagePropertiesChanging
=
"listItems_PagePropertiesChanging"
AllowPaging
=
"True"
>
<
LayoutTemplate
>
<
fieldset
style
=
"width: 900px"
>
<
legend
>Events</
legend
>
<
asp:PlaceHolder
ID
=
"EmployeesContainer"
runat
=
"server"
/>
</
fieldset
>
<
asp:Panel
ID
=
"HierarchyPanel"
runat
=
"server"
CssClass
=
"wrapper"
>
<
table
id
=
"products"
class
=
"products"
>
<
thead
>
<
tr
>
</
tr
>
</
thead
>
<
tbody
>
<
tr
id
=
"ProductTitlePlaceHolder"
runat
=
"server"
>
</
tr
>
</
tbody
>
</
table
>
</
asp:Panel
>
<
table
cellpadding
=
"0"
cellspacing
=
"0"
width
=
"100%;"
style
=
"clear: both;"
>
<
tr
>
<
td
>
<
telerik:RadDataPager
ID
=
"RadDataPager1"
runat
=
"server"
PagedControlID
=
"RadListView1"
OnPreRender
=
"Pager_Pre"
PageSize
=
"2"
Visible='<%# Container.PageCount != 1%>'>
<
Fields
>
<
telerik:RadDataPagerButtonField
FieldType
=
"FirstPrev"
/>
<
telerik:RadDataPagerButtonField
FieldType
=
"Numeric"
PageButtonCount
=
"5"
/>
<
telerik:RadDataPagerButtonField
FieldType
=
"NextLast"
/>
<
telerik:RadDataPagerTemplatePageField
>
<
PagerTemplate
>
<
div
style
=
"float: right"
>
<
b
>Items
<
asp:Label
runat
=
"server"
ID
=
"CurrentPageLabel"
Text="<%# Container.Owner.StartRowIndex+1%>" />
to
<
asp:Label
runat
=
"server"
ID
=
"TotalPagesLabel"
Text="<%# Container.Owner.TotalRowCount > (Container.Owner.StartRowIndex+Container.Owner.PageSize) ? Container.Owner.StartRowIndex+Container.Owner.PageSize : Container.Owner.TotalRowCount %>" />
of
<
asp:Label
runat
=
"server"
ID
=
"TotalItemsLabel"
Text="<%# Container.Owner.TotalRowCount%>" />
<
br
/>
</
b
>
</
div
>
</
PagerTemplate
>
</
telerik:RadDataPagerTemplatePageField
>
</
Fields
>
</
telerik:RadDataPager
><
br
/><
br
/>
</
td
>
</
tr
>
</
table
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
tr
>
<
td
class
=
"expand"
>
<
img
src
=
"../Images/Default%20Images/SinglePlus.gif"
alt
=
"Plus"
onclick
=
"toggleOrderDetails(this)"
/>
</
td
>
<
td
colspan
=
"4"
>
<
b
>Title:</
b
> <
asp:Label
ID
=
"TitleLabel"
runat
=
"server"
Text='<%# Eval("Title") %>' /><
br
/>
<
br
/>
</
td
>
</
tr
>
<
tr
class
=
"orders"
style
=
"display: none;"
>
<
td
class
=
"expand"
>
</
td
>
<
td
colspan
=
"4"
>
<
telerik:RadListView
ID
=
"RadListView2"
runat
=
"server"
ItemPlaceholderID
=
"OrderDetailsPlaceHolder"
EnableViewState
=
"false"
>
<
LayoutTemplate
>
<
table
>
<
asp:PlaceHolder
ID
=
"OrderDetailsPlaceHolder"
runat
=
"server"
></
asp:PlaceHolder
>
</
table
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
tr
>
<
td
>
<
b
>Date Start:</
b
>
<%#Eval("EventStart")%>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
b
>Date End</
b
>
<%#Eval("EventEnd")%>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
b
>Street</
b
>
<%#Eval("Street")%>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
b
>City:</
b
>
<%# Eval("City") %>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
b
>Content</
b
>
<%#Eval("Content")%>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
b
>Summary</
b
>
<%#Eval("Summary")%>
</
td
>
</
tr
>
</
ItemTemplate
>
</
telerik:RadListView
>
</
td
>
</
tr
>
</
ItemTemplate
>
</
telerik:RadListView
>
</
div
>
</
div
>
</
body
>
Here is my CodeBehind
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Sitefinity.Events.Model;
using Telerik.Sitefinity.GenericContent.Model;
using Telerik.Sitefinity.Modules.Events;
using Telerik.Sitefinity.Taxonomies;
using Telerik.Web.UI;
namespace SitefinityWebApp.UserControls
{
public partial class Events : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Pager_Pre(object sender, System.EventArgs e)
{
}
protected void listItems_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
}
protected void Page_Init(object sender, System.EventArgs e)
{
LoadData();
}
protected void LoadData()
{
TaxonomyManager taxMan = TaxonomyManager.GetManager();
var tags = taxMan.GetTaxonomy(TaxonomyManager.TagsTaxonomyId).Taxa;
tagSelector.DataTextField = "Title";
tagSelector.DataValueField = "Id";
tagSelector.DataSource = tags;
tagSelector.DataBind();
EventsManager eventsMan = EventsManager.GetManager();
var cities = eventsMan.GetEvents().Select(evt => evt.City.ToString()).ToList().Distinct();
citySelector.DataSource = cities;
citySelector.DataBind();
}
protected void Submit_Click(object sender, EventArgs e)
{
EventsManager eventsMan = EventsManager.GetManager();
string tagId;
if (tagSelector.SelectedIndex == -1)
{
tagId = "";
}
else
{
tagId = tagSelector.SelectedValue;
}
string city;
if (citySelector.SelectedIndex == -1)
{
city = "";
}
else
{
city = citySelector.SelectedItem.Text;
}
int? totalCount = -1;
IQueryable<
Event
> events = null;
if (!tagId.IsNullOrWhitespace())
{
events = eventsMan.Provider.GetItemsByTaxon(
new Guid(tagId),
false,
"Tags",
typeof(Event),
"Status = Master", "",
0, 100, ref totalCount).Cast<
Event
>().AsQueryable();
}
else
{
events = eventsMan.GetEvents()
.Where(evt => evt.Status == ContentLifecycleStatus.Master)
.Skip(0)
.Take(100);
}
if (!city.IsNullOrWhitespace())
events = events.Where(evt => evt.City == city);
if (RadDatePicker1.SelectedDate != null)
events = events.Where(evt => evt.EventStart >= RadDatePicker1.SelectedDate);
if (RadDatePicker2.SelectedDate != null)
events = events.Where(evt => evt.EventStart <= RadDatePicker2.SelectedDate);
RadListView1.DataSource = events;
RadListView1.DataBind();
LoadData();
foreach (RadListViewDataItem item in RadListView1.Items)
{
Label TitleLabel = (Label)item.FindControl("TitleLabel");
RadListView lb = (RadListView)item.FindControl("RadListView2");
string test = TitleLabel.Text;
IQueryable<
Event
> Subevents = null;
Subevents = eventsMan.GetEvents().Where(evt => (evt.Title == test && evt.Status == ContentLifecycleStatus.Live));
lb.DataSource = Subevents;
lb.DataBind();
}
}
}
}