This is a migrated thread and some comments may be shown as answers.

RadGrid filtering with needdatasource

1 Answer 389 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Sampath
Top achievements
Rank 1
Sampath asked on 27 May 2015, 06:23 AM

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

1 Answer, 1 is accepted

Sort by
0
Viktor Tachev
Telerik team
answered on 29 May 2015, 11:43 AM
Hello Sampath,

I tried to replicate the issue in a sample project, however, I was not able to. You will find the sample attached. Please give it a try and let me know how it works for you.

I will appreciate it if you let me know what should be modified in order to reproduce the problem.


Regards,
Viktor Tachev
Telerik
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Tags
Grid
Asked by
Sampath
Top achievements
Rank 1
Answers by
Viktor Tachev
Telerik team
Share this question
or