Hi,
I have bound data to a radgrid using the needdatasource method to display a set of details that I want. It works fine and I was able to remove the filter icon from each column and set the current filter function to contains as well.
Now, I want to be able to filter the details that I am seeing, but even though the options are set in the radgrid definition I can not filter or group my data. The events do not fire or cause any change.
What have I missed or done wrong? Please help.
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="time-and-action-ganttchart-details.aspx.cs" Inherits="time_and_action_ganttchart_details" %>
<
asp:Content
ID
=
"Content1"
ContentPlaceHolderID
=
"head"
runat
=
"Server"
>
<
title
>Genesis | Time And Action</
title
>
</
asp:Content
>
<
asp:Content
ID
=
"Content2"
ContentPlaceHolderID
=
"headstyles"
runat
=
"Server"
>
</
asp:Content
>
<
asp:Content
ID
=
"Content3"
ContentPlaceHolderID
=
"pagehead"
runat
=
"Server"
>
<
h1
>Time And Action <
small
>time and action plan</
small
></
h1
>
</
asp:Content
>
<
asp:Content
ID
=
"Content4"
ContentPlaceHolderID
=
"body"
runat
=
"Server"
>
<!-- BEGIN PAGE BREADCRUMB -->
<
ul
class
=
"page-breadcrumb breadcrumb"
>
<
li
>
<
a
href
=
"#"
>Home</
a
><
i
class
=
"fa fa-circle"
></
i
>
</
li
>
<
li
class
=
"active"
>time and action plan
</
li
>
</
ul
>
<!-- END PAGE BREADCRUMB -->
<!-- BEGIN PAGE CONTENT INNER -->
<
div
class
=
"row"
>
<
div
class
=
"col-md-12"
>
<!-- BEGIN SAMPLE FORM PORTLET-->
<
div
class
=
"portlet light "
>
<
div
class
=
"portlet-title"
>
<
div
class
=
"caption caption-md"
>
<
i
class
=
"icon-bar-chart theme-font-color hide"
></
i
>
<
span
class
=
"caption-subject theme-font-color bold uppercase"
>Time And Action Plan</
span
>
</
div
>
<
div
class
=
"actions"
>
<
a
class
=
"btn btn-circle btn-icon-only btn-default fullscreen"
href
=
"javascript:;"
></
a
>
</
div
>
</
div
>
<
div
class
=
"portlet-body"
>
<
div
class
=
"table-responsive"
>
<
asp:ScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
></
asp:ScriptManager
>
<
asp:ImageButton
ID
=
"ImageButton1"
runat
=
"server"
OnClick
=
"ImageButton1_Click"
ImageUrl
=
"~/images/Office-Excel-icon.png"
Width
=
"4%"
Height
=
"4%"
ToolTip
=
"Export to Excel"
/>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
AllowSorting
=
"True"
AllowPaging
=
"True"
ShowGroupPanel
=
"True"
GroupingSettings-CaseSensitive
=
"false"
AllowFilteringByColumn
=
"True"
CellSpacing
=
"-1"
GridLines
=
"Both"
Skin
=
"Metro"
CssClass
=
"rad_header_style"
Width
=
"100%"
OnColumnCreated
=
"RadGrid1_ColumnCreated"
OnDataBound
=
"RadGrid1_DataBound"
>
</
telerik:RadGrid
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
<!-- END PAGE CONTENT -->
</
asp:Content
>
<
asp:Content
ID
=
"Content5"
ContentPlaceHolderID
=
"footer"
runat
=
"Server"
>
<!-- BEGIN PAGE LEVEL PLUGINS -->
<
script
type
=
"text/javascript"
src
=
"../../assets/global/plugins/fancybox/source/jquery.fancybox.pack.js"
></
script
>
<
script
src
=
"../../assets/global/scripts/metronic.js"
type
=
"text/javascript"
></
script
>
<
script
src
=
"../../assets/admin/layout4/scripts/layout.js"
type
=
"text/javascript"
></
script
>
<
script
src
=
"../../assets/admin/layout4/scripts/demo.js"
type
=
"text/javascript"
></
script
>
<
script
>
jQuery(document).ready(function () {
Metronic.init(); // init metronic core components
Layout.init(); // init current layout
Demo.init(); // init demo features
});
</
script
>
<!-- END PAGE LEVEL PLUGINS -->
</
asp:Content
>
using System;
using System.Data;
using System.Linq;
using Telerik.Web.UI;
public partial class time_and_action_ganttchart_details : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
short techpackID = 93; // short.Parse(Request.QueryString[0]);
DataTable dt = new DataTable();
dt.Columns.Add("Customer", typeof(string));
dt.Columns.Add("Account", typeof(string));
dt.Columns.Add("Season", typeof(string));
dt.Columns.Add("Program", typeof(string));
dt.Columns.Add("Tech Pack Name", typeof(string));
dt.Columns.Add("Design Ref", typeof(string));
dt.Columns.Add("Stroke", typeof(string));
dt.Columns.Add("Type", typeof(string));
dt.Columns.Add("Assortment Name", typeof(string));
dt.Columns.Add("Component", typeof(string));
dt.Columns.Add("RM Description", typeof(string));
dt.Columns.Add("Supplier", typeof(string));
dt.Columns.Add("CSP", typeof(string));
dt.Columns.Add("Mode", typeof(string));
dt.Columns.Add("RM Color Code", typeof(string));
dt.Columns.Add("RM Color Name", typeof(string));
dt.Columns.Add("Silhoutte", typeof(string));
dt.Columns.Add("Garment Number", typeof(string));
using (PDLC.Data.PDLCEntities context = new PDLC.Data.PDLCEntities())
{
var version = context.V_TimeAndAction_TechPackLeadTime.Where(x => x.TP_ID == techpackID).Select(s => new { s.VersionID }).Max(p => p.VersionID);
var distinctEvents = context.V_TimeAndAction_TechPackLeadTime.Where(x => x.TP_ID == techpackID && x.VersionID == version).Select(s => new { s.EventText, s.EventOrder }).Distinct().OrderBy(o => o.EventOrder);
foreach (var eventname in distinctEvents)
{
dt.Columns.Add(eventname.EventText, typeof(string));
dt.Columns.Add("Actual " + eventname.EventText, typeof(string));
dt.Columns.Add("Committed " + eventname.EventText, typeof(string));
}
var assortmentIdList = context.V_TimeAndAction_TechPackLeadTime.Where(x => x.TP_ID == techpackID && x.VersionID == version).Select(s => new { s.AS_ID }).Distinct();
foreach (var assortmentId in assortmentIdList)
{
var rawMaterialList = context.V_TimeAndAction_TechPackLeadTime.Where(x => x.TP_ID == techpackID && x.VersionID == version && x.AS_ID == assortmentId.AS_ID).Select(s => new { s.RawMaterialID }).OrderBy(o => o.RawMaterialID).Distinct();
foreach (var rawmaterial in rawMaterialList)
{
DataRow dr = dt.NewRow();
var headerDetails = context.V_TimeAndAction_TechPackLeadTime.Where(x => x.TP_ID == techpackID && x.VersionID == version && x.AS_ID == assortmentId.AS_ID && x.RawMaterialID == rawmaterial.RawMaterialID).Select(s => new
{
s.Cust_Name,
s.Account_Name,
s.Season_Name,
s.ProgramName,
s.Design_Ref,
s.Stroke,
s.StyleTypeName,
s.Component_Name,
s.Description60Digit,
s.sales_office_name,
s.Color_Code,
s.Color_Name,
s.ShapeName,
s.GMT_ID,
s.TP_Name,
s.Assortment_name
}).Distinct().First();
dr["Customer"] = headerDetails.Cust_Name;
dr["Account"] = headerDetails.Account_Name;
dr["Season"] = headerDetails.Season_Name;
dr["Program"] = headerDetails.ProgramName;
dr["Tech Pack Name"] = headerDetails.TP_Name;
dr["Design Ref"] = headerDetails.Design_Ref;
dr["Stroke"] = headerDetails.Stroke;
dr["Type"] = headerDetails.StyleTypeName;
dr["Assortment Name"] = headerDetails.Assortment_name;
dr["Component"] = headerDetails.Component_Name;
dr["RM Description"] = headerDetails.Description60Digit;
dr["Supplier"] = headerDetails.sales_office_name;
dr["CSP"] = "CSP";
dr["Mode"] = "Mode";
dr["RM Color Code"] = headerDetails.Color_Code;
dr["RM Color Name"] = headerDetails.Color_Name;
dr["Silhoutte"] = headerDetails.ShapeName;
dr["Garment Number"] = headerDetails.GMT_ID;
var eventIdList = context.V_TimeAndAction_TechPackLeadTime.Where(x => x.TP_ID == techpackID && x.VersionID == version && x.AS_ID == assortmentId.AS_ID && x.RawMaterialID == rawmaterial.RawMaterialID).Select(s => new { s.EventID, s.EventOrder, s.EventText }).Distinct().OrderBy(o => o.EventOrder);
foreach (var eventId in eventIdList)
{
var timeandactiondates = context.V_TimeAndAction_TechPackLeadTime.Where(x => x.TP_ID == techpackID && x.VersionID == version && x.AS_ID == assortmentId.AS_ID && x.RawMaterialID == rawmaterial.RawMaterialID && x.EventID == eventId.EventID).Select(s => new { s.TimeAndActionES, s.ActualDate, s.CommittedDate }).Distinct().FirstOrDefault();
DateTime timeandactiones = (DateTime)timeandactiondates.TimeAndActionES;
dr[eventId.EventText] = timeandactiones.ToShortDateString();
if (timeandactiondates.ActualDate != null)
{
DateTime timeandactionactual = (DateTime)timeandactiondates.ActualDate;
dr["Actual " + eventId.EventText] = timeandactionactual.ToShortDateString();
}
else
{
dr["Actual " + eventId.EventText] = timeandactiondates.ActualDate;
}
if (timeandactiondates.CommittedDate != null)
{
DateTime timeandactualcommitted = (DateTime)timeandactiondates.CommittedDate;
dr["Committed " + eventId.EventText] = timeandactualcommitted.ToShortDateString();
}
else
{
dr["Committed " + eventId.EventText] = timeandactiondates.CommittedDate;
}
}
dt.Rows.Add(dr);
}
}
}
RadGrid1.DataSource = dt;
}
protected void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
RadGrid1.Rebind();
RadGrid1.ExportSettings.ExportOnlyData = true;
RadGrid1.ExportSettings.IgnorePaging = true;
RadGrid1.ExportSettings.OpenInNewWindow = true;
RadGrid1.ExportSettings.UseItemStyles = true;
RadGrid1.ExportSettings.Excel.Format = GridExcelExportFormat.Xlsx;
RadGrid1.ExportSettings.FileName = "T-and-A " + DateTime.Today.ToString("yyyy-MM-dd");
RadGrid1.MasterTableView.ExportToExcel();
}
protected void RadGrid1_ColumnCreated(object sender, GridColumnCreatedEventArgs e)
{
e.Column.ShowFilterIcon = false;
}
protected void RadGrid1_DataBound(object sender, EventArgs e)
{
foreach (GridColumn column in RadGrid1.MasterTableView.AutoGeneratedColumns)
{
column.AutoPostBackOnFilter = true;
column.CurrentFilterFunction = GridKnownFunction.Contains;
column.ShowFilterIcon = false;
}
}
}
Thanks in advance. :)