如何设置CurrentFilterFunction ="包含" ShowFilterIcon ="假"在TELERIK RadGrid中与NeedDataSource进行数据绑定时的列中

时间:2015-05-27 03:09:07

标签: c# asp.net telerik

我正在关注使用needdatasource(click here to view telerik demo)将数据绑定到radgrid的示例。

这是我的HTML代码,

<telerik:RadGridID="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%">
  </telerik:RadGrid>

以下是我如何从代码中绑定数据

using System;
using System.Data;
using System.Linq;
using Telerik.Web.UI;

publicpartialclasstime_and_action_ganttchart_details : System.Web.UI.Page
{
    protectedvoidPage_Load(objectsender, EventArgs e)
    {

    }

    protectedvoidRadGrid1_NeedDataSource(objectsender, GridNeedDataSourceEventArgs e)
    {
        shorttechpackID = 93; // short.Parse(Request.QueryString[0]);

        DataTable dt = newDataTable();

        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 = newPDLC.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 indistinctEvents)
            {
                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 inassortmentIdList)
            {
                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 inrawMaterialList)
                {
                    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 ineventIdList)
                    {
                        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;       
    }
}

现在我想要隐藏过滤器图标并将列搜索过滤条件设置为包含(CurrentFilterFunction =&#34;包含&#34; ShowFilterIcon =&#34; false&#34;)。

希望尽快收到你的回复。谢谢。

1 个答案:

答案 0 :(得分:0)

你有三个选择

  • 使用OnColumnCreated事件,event arguments为您提供列

  • 或者,使用Page_PreRender事件并循环遍历RadGrid1.Columns集合。如果您知道所有字段名称,也可以使用RadGrid1.MasterTableView.GetColumnSafe(&#34; DataSourceFieldName&#34;)来获取列。

  • 或者,使用所需的设置在标记中声明您的列