Search code examples
asp.netmodel-bindingtelerik-gridstrong-typing

Telerik UI Radgrid Strongly Typed GridTemplateColumn issue


I'm on Visual Studio 2015 and using Telerik to create simple listings of my Entity in a RadGrid. I dont get any compilation error or runtime error. The page renders but the grid is missing (except there is a thin line where Grid should be and I do not see any columns or data etc)

I'm using EF. Here is my entity:

    public class Event
{
    public Event()
    {
        Comments = new List<Comment>();
    }

    [ScaffoldColumn(false)]
    public int EventID { get; set; }

    [Required,MaxLength(50), Display(Name ="Event Name")]
    public string EventName { get; set; }

    [MaxLength(500)]
    public string EventDescription { get; set; }        


    public DateTime EventDate { get; set; }
    //public List<User> Attending { get; set; }   // might have to remove this:

    public ICollection<Comment> Comments { get; set; }

    public bool CommentLock { get; set; }   // A property to enable/stop users from commenting


    // set raltionships
    // FK to Venue
    public int VenueID { get; set; }

    //Nav properties:
    public Venue Venue { get; set; }

}

My webForm.aspx file

    <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="WebApp.Test" %>

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

    <br />
        <telerik:RadGrid
            ID="RadGrid1"
            runat="server"
            AutoGenerateColumns="False"
            SelectMethod="GetEvents" AllowPaging="True" AllowSorting="True" GridLines="None">

            <ClientSettings>
                <Selecting AllowRowSelect="True" />
            </ClientSettings>

            <MasterTableView ItemType="DomainModels.Event">
                <Columns>
                    <telerik:GridTemplateColumn HeaderText="Event ID Number:">
                        <ItemTemplate><%# Item.EventID %></ItemTemplate>
                    </telerik:GridTemplateColumn>

                    <telerik:GridTemplateColumn HeaderText="Event Name:">
                        <ItemTemplate><%# Item.EventName %></ItemTemplate>
                    </telerik:GridTemplateColumn>
                </Columns>
            </MasterTableView>

            <FilterMenu EnableTheming="True">
                <CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation>
            </FilterMenu>

        </telerik:RadGrid>

</asp:Content>

My Code behind aspx.cs file

using System;
using System.Linq;
using DomainModels;
using DataLayer;

namespace WebApp
{
    public partial class Test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }


        public IQueryable<Event> GetEvents()
        {
            CoffeeEventsDBContext context = new CoffeeEventsDBContext();
            IQueryable<Event> returnSet = context.Events;
            return returnSet;
        }

    }
}

When I run this I get the page but instead of the grid, I see a thin horizontal line matching the theme of the grid but I dont see any columns.

I also set a breakpoint on this line in the aspx file:

<ItemTemplate><%# Item.EventID %></ItemTemplate>

But the breakpoint is never hit.

What am I doing wrong? Appreciate your help. New to WebFroms/Telerik.


Solution

  • You don't need to use model binding syntax, the RadGrid does this automatically with Bound Columns. First, make sure your select method is actually returning something, then try this for your grid columns.

    <MasterTableView>
                    <Columns>
                        <telerik:GridBoundColumn DataField="EventID" HeaderText="Event ID Number" />
                        <telerik:GridBoundColumn DataField="EventName" HeaderText="Event Name:" />                        
                    </Columns>
                </MasterTableView>