Filtering the EVENTS Module

Posted by Community Admin on 04-Aug-2018 23:26

Filtering the EVENTS Module

All Replies

Posted by Community Admin on 14-Dec-2012 00:00

We just bought this CMS software. I am pretty new to the API. I have gone thru some documentation on the wesbite searching for my answers. Well i am still searching!!!. My question is regarding filtering by Category, Tags, start Date and End Date in the Events Module.

I am using Sitefinity 5.1

For example I have created  Three Events. (Event1, Event2, Event3)
Event1 has a Category as CityA and Tags as Kids, Teens.
Event2 has a Category as CityB  and Tags as Kids, Adults.
Event3 has a Category as CityC, and Tags as Teens, Adults.

I want filter the results based upon categories, tags and dates selected.
So i created 2 RadListBox with check boxes of Tags and Categories, and two RadDatePicker for the dates.

 So how do i show all the Events based upon different Categories and Tags with start date and End Date ?  The user can select Multiple Categories and multiple Tags.  I want the result set to bind to a RadListView

I have made the ASCX page with the controls.  I also tried to use the IMetaSearchInfo which is not working. I don't know what namespaces i need.

I also hard coded the Tags and Categories in the RadListBox with check boxes.
 IS there any other way that i can automatically populate the RadListBox using the API without hard coding the tags and categories?

Here is MY ASCX 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" %>
<telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
<telerik:RadSkinManager ID="QsfSkinManager" runat="server" ShowChooser="true" />
<telerik:RadFormDecorator ID="QsfFromDecorator" runat="server" DecoratedControls="All"
    EnableRoundedCorners="false" />
<label for="NamesDDL">
    Select contact name to view its product orders:</label>
<div style="margin-top: 15px;">
    <table>
        <tr>
            <td>
                Categories
            </td>
            <td>
                Location
            </td>
            <td>
                Start Date
            </td>
            <td>
                End Date
            </td>
        </tr>
        <tr>
            <td>


 
    <telerik:RadListBox ID="RadListBox1" runat="server" CheckBoxes="true" Width="120px"
                Height="100px">
                <Items>
                    <telerik:RadListBoxItem Text="Kids"></telerik:RadListBoxItem>
                    <telerik:RadListBoxItem Text="Adult"></telerik:RadListBoxItem>
                    <telerik:RadListBoxItem Text="Teens"></telerik:RadListBoxItem>
                </Items>
            </telerik:RadListBox>


          
               
            </td>
            <td>

            <telerik:RadListBox ID="RadListBox2" runat="server" CheckBoxes="true" Height="100"  Width="120px">
                <Items>
                    <telerik:RadListBoxItem Text="CityA"></telerik:RadListBoxItem>
                    <telerik:RadListBoxItem Text="CityB"></telerik:RadListBoxItem>
                    <telerik:RadListBoxItem Text="CittyC"></telerik:RadListBoxItem>
                </Items>
            </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">
                    </Calendar>
                    <DateInput ID="DateInput1" ToolTip="Date input" runat="server">
                    </DateInput>
                </telerik:RadDatePicker>
                <telerik:RadButton ID="Submit" runat="server" Text="Search" OnClick="Submit_Click">
                </telerik:RadButton>
            </td>
        </tr>
    </table>
</div>
<div style="margin: 15px 0 20px;">
   <telerik:RadListView ID="RadListView1" DataSourceID="SqlDataSource1" runat="server"
        ItemPlaceholderID="EmployeesContainer" AllowPaging="True" PageSize=3>
        <LayoutTemplate>
            <fieldset style="width: 900px">
                <legend>Events</legend>
                <asp:PlaceHolder ID="EmployeesContainer" runat="server"></asp:PlaceHolder>
            </fieldset>
        </LayoutTemplate>
        <ItemTemplate>
            <fieldset style="float: left; width: 420px;">
                <legend>Company:
                            <%#Eval("Title")%>
                </legend>
                <table cellpadding="0" cellspacing="0">
                    <tr>
                        <td>
                            <table cellpadding="0" cellspacing="0">
                                <tr>
                                    <td style="width: 25%">Location:
                                    </td>
                                    <td style="width: 50%">
                                        <%#Eval("Location")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Address:
                                    </td>
                                    <td>
                                        <%#Eval("Address")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Contact:
                                    </td>
                                    <td>
                                        <%# Eval("Contact")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Email:
                                    </td>
                                    <td>
                                        <%# Eval("Email")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Website:
                                    </td>
                                    <td>
                                        <%# Eval("Website")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Phone:
                                    </td>
                                    <td>
                                        <%#Eval("Phone")%>
                                    </td>
                                </tr>
                            </table>
                        </td>
                        <td align="right" style="width: 25%; padding-left: 10px;">
                            <telerik:RadBinaryImage ID="RadBinaryImage1" runat="server" AlternateText="Contact Photo"
                                ToolTip="Contact Photo" Width="90px" Height="110px" ResizeMode="Fit" DataValue='<%# Eval("Photo") %>'>
                            </telerik:RadBinaryImage>
                        </td>
                    </tr>
                </table>
            </fieldset>
        </ItemTemplate>
        <AlternatingItemTemplate>
            <fieldset style="float: left; width: 420px;">
                <legend>Company:
                            <%#Eval("CompanyName")%>
                </legend>
                <table cellpadding="0" cellspacing="0">
                                <tr>
                                    <td style="width: 25%">Location:
                                    </td>
                                    <td style="width: 50%">
                                        <%#Eval("Location")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Address:
                                    </td>
                                    <td>
                                        <%#Eval("Address")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Contact:
                                    </td>
                                    <td>
                                        <%# Eval("Contact")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Email:
                                    </td>
                                    <td>
                                        <%# Eval("Email")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Website:
                                    </td>
                                    <td>
                                        <%# Eval("Website")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Phone:
                                    </td>
                                    <td>
                                        <%#Eval("Phone")%>
                                    </td>
                                </tr>
                            </table>
                        </td>
                        <td align="right" style="width: 25%; padding-left: 10px;">
                            <telerik:RadBinaryImage ID="RadBinaryImage1" runat="server" AlternateText="Contact Photo"
                                ToolTip="Contact Photo" Width="90px" Height="110px" ResizeMode="Fit" DataValue='<%# Eval("Photo") %>'>
                            </telerik:RadBinaryImage>
                        </td>
                    </tr>
                </table>
            </fieldset>
        </AlternatingItemTemplate>
    </telerik:RadListView>
</div>




<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" EnableAJAX="true" DefaultLoadingPanelID="RadAjaxLoadingPanel1">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="NamesDDL">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="EventsGrid" LoadingPanelID="AjaxLoadingPanel1">
                </telerik:AjaxUpdatedControl>
                <telerik:AjaxUpdatedControl ControlID="NamesDDL"></telerik:AjaxUpdatedControl>
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
</telerik:RadAjaxLoadingPanel>
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Here is my Code Behind

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Sitefinity;
using Telerik.Sitefinity.GenericContent.Model;
using Telerik.Web.UI;
using System.ComponentModel;
using Telerik.Sitefinity.Web.DataResolving;
using Telerik.Sitefinity.Pages.Model;
using Telerik.Sitefinity.Events.Model;
using Telerik.Sitefinity.Modules.Events;
using Telerik.Sitefinity.Model;

using Telerik.Sitefinity.Workflow;
using System.Collections;
using System.Text;
using Telerik.OpenAccess;








namespace SitefinityWebApp.UserControls

    public partial class Events : System.Web.UI.UserControl
   
        protected void Page_Load(object sender, EventArgs e)
       

       





        protected void Submit_Click(object sender, EventArgs e)
       



            StringBuilder sb = new StringBuilder();
            IList<RadListBoxItem> collection = RadListBox1.CheckedItems;
            foreach (RadListBoxItem item in collection)
           
                sb.Append(item.Value + ",");
           

            String Catg;
            Catg = sb.ToString();


            StringBuilder sbTag = new StringBuilder();
            IList<RadListBoxItem> collectionTag = RadListBox1.CheckedItems;
            foreach (RadListBoxItem item in collectionTag)
           
                sbTag.Append(item.Value + ",");
           

            String Tags;
            Tags = sbTag.ToString();

            // new instance of eventsManager
            EventsManager eventsManager = new EventsManager("Events");


            //create a filer  
            List<IMetaSearchInfo> filter = new List<IMetaSearchInfo>();
            filter.Add(new MetaSearchInfo(MetaValueTypes.ShortText, "Category", Catg, SearchCondition.Equal, JoinType.And));
            filter.Add(new MetaSearchInfo(MetaValueTypes.ShortText, "Tags", Tags, SearchCondition.Equal, JoinType.And));
            filter.Add(new MetaSearchInfo(MetaValueTypes.ShortText, "Event_Start", RadDatePicker1.SelectedDate.Value.ToShortDateString(), SearchCondition.Equal, JoinType.And));
            filter.Add(new MetaSearchInfo(MetaValueTypes.ShortText, "Event_End", RadDatePicker2.SelectedDate.Value.ToShortDateString(), SearchCondition.Equal, JoinType.And));

            // get all events
            IList listOfAllEvents = eventsManager.Content.GetContent(0, 0, string.Empty, null, string.Empty, null, filter.ToArray());

            // foreach (IContent eventItem in listOfAllEvents)
            //   Response.Write(eventItem.GetMetaData("Title").ToString() + "<br />");

            RadListView1.DataSource = listOfAllEvents.ToString();
            RadListView1.DataBind();


            // filterBuilder.AddFilter(new ContentFilterStatement("Tag.Name", tag.TagName, ContentFilter.Condition.Equal, ContentFilter.JoinType.And));

       


   


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

Hello Rajeev,

First off, I'd like to refer you to Sitefinity's Developer's Guide. There you may find many references on how to use Sitefinity's components, managers, providers and content items (see some links I've included in the answer below).

For example, here is an article which shows how to correctly use EventsManager in order to retrieve events, and here is the documentation page about Events.
If you build your page/control with some powerful code-behind you may be get more flexibility and power, for example you may want to use Sitefinity's convenient, yet powerful, Fluent API.

To help you with your current attempt, I've produced an alternative to your code (it in a regular webform .aspx. You could, of course, wrap the code as a user-control, add it to the regular page's toolbox and then simply drag and drop it directly on a page with Sitefinity's page editor).

Here is the apsx client site markup, and some comments below it:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EventsPage1.aspx.cs" Inherits="SitefinityWebApp.EventsPage" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html>
 
<head runat="server">
     
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
        <table>
                    <tr>
            <td>
                Categories
            </td>
            <td>
                Location
            </td>
            <td>
                Start Date
            </td>
            <td>
                End Date
            </td>
        </tr>
            <tr>
                <td>
                    <asp:DropDownList ID="categorySelector" runat="server"/>
                </td>
                <td>
                    <asp:DropDownList ID="citySelector" runat="server"/>
                </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"/>
            </td>
           </tr>
        </table>
 
        <telerik:RadListView ID="RadListView1" runat="server" AllowPaging="True" PageSize=3 ItemPlaceholderID="EmployeesContainer">
            <LayoutTemplate>
            <fieldset style="width: 900px">
                <legend>Events</legend>
                <asp:PlaceHolder ID="EmployeesContainer" runat="server"/>
            </fieldset>
        </LayoutTemplate>
        <ItemTemplate>
            <fieldset style="float: left; width: 420px;">
                <legend>Company:
                            <%#Eval("Title")%>
                </legend>
                <table cellpadding="0" cellspacing="0">
                    <tr>
                        <td>
                            <table cellpadding="0" cellspacing="0">
                                <tr>
                                    <td style="width: 25%">Location:
                                    </td>
                                    <td style="width: 50%">
                                        <%#Eval("City")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Address:
                                    </td>
                                    <td>
                                        <%#Eval("Street")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Contact:
                                    </td>
                                    <td>
                                        <%# Eval("ContactName")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Email:
                                    </td>
                                    <td>
                                        <%# Eval("ContactEmail")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Website:
                                    </td>
                                    <td>
                                        <%# Eval("ContactWeb")%>
                                    </td>
                                </tr>
                                <tr>
                                    <td>Phone:
                                    </td>
                                    <td>
                                        <%#Eval("ContactPhone")%>
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </table>
            </fieldset>
        </ItemTemplate>
        </telerik:RadListView>
    </form>
</body>
</html>

Note the following:

  • My page uses regular ASP.NET drop-down lists. Those are populated dynamically by querying some data from Sitefinity's content (see the code to learn how), and not statically hard-coded in the markup.
  • I use the same DatePickers you used, and slightly simpler RadListView, based on your HTML markup.

My server side code-behind:

using System;
using System.Linq;
using Telerik.Sitefinity.Events.Model;
using Telerik.Sitefinity.GenericContent.Model;
using Telerik.Sitefinity.Modules.Events;
using Telerik.Sitefinity.Taxonomies;
 
namespace SitefinityWebApp
    public partial class EventsPage : System.Web.UI.Page
    
        protected void Page_Load(object sender, EventArgs e)
        
            if (!IsPostBack)
            
                TaxonomyManager taxMan = TaxonomyManager.GetManager();
                var categories = taxMan.GetTaxonomy(TaxonomyManager.CategoriesTaxonomyId).Taxa;
                categorySelector.DataValueField = "Id";
                categorySelector.DataTextField = "Title";
                categorySelector.DataSource = categories;
                categorySelector.DataBind();
 
                EventsManager eventsMan = EventsManager.GetManager();
                var cities = eventsMan.GetEvents().Select(evt => evt.City.ToString()).ToList().Distinct();
                citySelector.DataSource = cities;
                citySelector.DataBind();
 
            
            Submit.Click += Submit_Click;
        
 
        void Submit_Click(object sender, EventArgs e)
        
            EventsManager eventsMan = EventsManager.GetManager();
 
            int? totalcount = -1;
            var categoryId = categorySelector.Items[categorySelector.SelectedIndex].Value;
            string city = citySelector.Items[citySelector.SelectedIndex].Value;
 
            IQueryable<Event> events = null;
 
            if (!categoryId.IsNullOrWhitespace())
            
                events = eventsMan.Provider.GetItemsByTaxon(
                    new Guid(categoryId),
                    false,
                    "Category",
                    typeof(Event),
                    "Status = Master", "",
                    RadListView1.PageSize * RadListView1.CurrentPageIndex,
                    RadListView1.PageSize, ref totalcount).Cast<Event>().AsQueryable();
            
            else
            
                events = eventsMan.GetEvents()
                    .Where(evt => evt.Status == ContentLifecycleStatus.Master)
                    .Skip(RadListView1.PageSize * RadListView1.CurrentPageIndex)
                    .Take(RadListView1.PageSize);
            
 
            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();
 
        
    

Note:

  • On the Page_Load event handler I populate the categories and location drop-downs.
    The categories selector is populated with all the categories defined in the system.
    Notice how I retrieve the manager by using the manager's static GetManager method, and not by instantiating it myself with a constructor.
    The location drop-down is populated with all the city locations which are included in any of the current events in the system.
  • I hook the submit button's click event on the server side. This does not matter, you may still hook the handler via the markup if you like.
  • On the click event, I retrieve events as a queryable collection, using the EventsManager. Notice there's a difference if you wish to retrieve events by a specific category or uncategorized directly.
    To control categories / tags I refer you to the Taxonomies documentation.
  • Note I retrieve events which are of status Master. I refer you here to documentation about lifecycle in Sitefinity, to understand how it works and differentiates items by their publication status.
  • I also set the current page of items by getting the page-size and current page number from the RadListView.
  • Then Add filters by city and make sure the event's start date is between the 2 date selectors (You may, of course, add more filters as you wish or change the current implementation to select only events with explicit start and end dates as selected).
  • The last part is simply binding the RadListView with the final queryable results.

I hope you find this information helpful in order to progress with your development.


Regards,
Alon Rotem
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

Posted by Community Admin on 02-Jan-2013 00:00

Thanks for your help. I am kind of stuck on Two things. I did some
changes to the previous code.

  1. Instead of Categories i am using TAGS. 
  2. Now i am populating the Listbox in the Page_Init. 
  3. Now i am using the Radlistview like this

    http://demos.telerik.com/aspnet-ajax/listview/examples/appearancestyling/customlayouts/defaultcs.aspx
  4. I have added the telerik:RadDataPager.
  5. I call the LoadData to load the values of the Listboxes. 
  6.  I also changed

    RadListView1.PageSize * RadListView1.CurrentPageIndex,

    RadListView1.PageSize, ref totalCount).Cast<Event>().AsQueryable();to this

    0, 100, ref totalCount).Cast<Event>().AsQueryable();


       My questions          


1) I implemented the telerik:RadDataPager. The Pager works fine for the
first set of records. When i click NEXT no records are displayed and RadDataPager also disappears.
 I tried to Rebind the Listview in PreRender but still it is not working.

 protected void RadListView1_PreRender(object sender, EventArgs e)
       
            RadListView1.Rebind();
            LoadData();
       

2) 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.

<%@ 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>
                <telerik:AjaxSetting AjaxControlID="SushiPanel">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="SushiPanel" LoadingPanelID="RadAjaxLoadingPanel1">
                        </telerik:AjaxUpdatedControl>
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </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"
                    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>State</b>  
                                                <%#Eval("State")%>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td>
                                                <b>Country:</b>  
                                                <%# Eval("Country") %>
                                            </td>
                                        </tr>
                                        <tr>
                                            <td>
                                                <b>Summary</b>  
                                                <%#Eval("Summary")%>
                                            </td>
                                        </tr>
                                    </ItemTemplate>
                                </telerik:RadListView>
                            </td>
                        </tr>
                    </ItemTemplate>
                </telerik:RadListView>
            </div>
            </div>
</body>


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)
        
           // RadListView1.DataSource = Session["Event"];
           // RadListView1.DataBind();
             
        
 
 
 
        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();
                // RadListView1.PageSize * RadListView1.CurrentPageIndex,
                // RadListView1.PageSize, ref totalCount).Cast<Event>().AsQueryable();
 
            
            else
            
 
                events = eventsMan.GetEvents()
                    .Where(evt => evt.Status == ContentLifecycleStatus.Master)
                    // .Skip(RadListView1.PageSize * RadListView1.CurrentPageIndex)
                    // .Take(RadListView1.PageSize);
                    .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();
 
                //        
 
 
            
 
 
 
        
 
   
    

Posted by Community Admin on 02-Jan-2013 00:00

Hi Rajeev,

Maybe you already tried this, but be sure to turn on the ViewState option inside the page properties where you host your UserControl.
I think that you need it in order to preserve the viewstate with the values of the selected listitems.

Regards,
Daniel

Posted by Community Admin on 02-Jan-2013 00:00

It is still not working

This thread is closed