I am having the following problem. I am doing the excel type Filter (FilterType="HederContext"). All the filtering options work except for the list box combo. I am retrieving the list box options (and they display), but when I check to filter one of them it does not filter any of the data elements. I can use the sort ascending/descending/add & remove columns. Start by and equals.
I just cannot use any fields in the combo box.
Here is the code sample:
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/WebForms.master" AutoEventWireup="true" CodeBehind="PostageReport.aspx.cs" Inherits="Site.Areas.Reports.PostageReport.PostageReport" %><asp:Content ID="Content7" ContentPlaceHolderID="ContentBottom" runat="server"> Date From: <asp:Label runat="server" Visible="true" ID="lblDf"></asp:Label><br /> Date To: <asp:Label runat="server" Visible="true" ID="lblDt"></asp:Label><%-- <telerik:RadScriptManager ID ="RadScriptManager1" runat="server" />--%> <telerik:RadSkinManager ID="RadSkinManager1" runat="server" ShowChooser="true" /> <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" EnableAJAX="true" LoadingPanelID="LoadingPanel1"> <telerik:RadGrid ID="RadGrid1" runat="server" RenderMode="Lightweight" AllowFilteringByColumn="true" FilterType="HeaderContext" EnableHeaderContextMenu="true" EnableHeaderContextFilterMenu="true" EnableFiltering="true" AllowPaging="True" PagerStyle-AlwaysVisible="true" AllowSorting="true" GroupingEnabled="true" OnNeedDataSource="RadGrid1_NeedDataSource" OnFilterChecklistItemsRequested="RadGrid1_FilterCheckListItemsRequested"> <MasterTableView AutoGenerateColumns="false" DataKeyNames="new_entrynumber" AllowFilteringByColumn="true" AllowSorting="true" OverrideDataSourceControlSorting="true"> <Columns> <telerik:GridBoundColumn FilterCheckListEnableLoadOnDemand="true" DataField="new_entrydate" DataFormatString="{0:d}" FilterControlWidth="45px" DataType="System.DateTime" HeaderText="Date" UniqueName="Date"></telerik:GridBoundColumn> <telerik:GridBoundColumn FilterCheckListEnableLoadOnDemand="true" DataField="new_customernumberid" FilterControlWidth="45px" DataType="System.String" HeaderText="Account Number" UniqueName="CustomerNumber"></telerik:GridBoundColumn> <telerik:GridBoundColumn FilterCheckListEnableLoadOnDemand="true" DataField="new_costcenter" FilterControlWidth="45px" DataType="System.String" HeaderText="Cost Center" UniqueName="CostCenter"></telerik:GridBoundColumn> <telerik:GridBoundColumn FilterCheckListEnableLoadOnDemand="true" DataField="new_installname" FilterControlWidth="45px" DataType="System.String" HeaderText="Customer Name" UniqueName="CustomerName"></telerik:GridBoundColumn> <telerik:GridBoundColumn FilterCheckListEnableLoadOnDemand="true" DataField="new_installcity" FilterControlWidth="45px" DataType="System.String" HeaderText="City" UniqueName="City"></telerik:GridBoundColumn> <telerik:GridBoundColumn FilterCheckListEnableLoadOnDemand="true" DataField="new_installstate" FilterControlWidth="30px" DataType="System.String" HeaderText="State" UniqueName="State"></telerik:GridBoundColumn> <telerik:GridBoundColumn FilterCheckListEnableLoadOnDemand="true" DataField="new_serialnumber" FilterControlWidth="45px" DataType="System.String" HeaderText="Serial Number" UniqueName="SerialNumber"></telerik:GridBoundColumn> <telerik:GridBoundColumn FilterCheckListEnableLoadOnDemand="true" DataField="new_entrydescription" FilterControlWidth="45px" DataType="System.String" HeaderText="Description" UniqueName="TransDescription"></telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="new_entryamount" DataFormatString="{0:N}" FilterControlWidth="45px" HeaderText="Amount" UniqueName="TransAmount"> <ItemStyle HorizontalAlign="Right" /> <HeaderStyle HorizontalAlign="Right" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="new_numberimprints" FilterControlWidth="45px" DataType="System.Decimal" HeaderText="Total Piece Count" UniqueName="TotalPieceCount"> <ItemStyle HorizontalAlign="Right" /> <HeaderStyle HorizontalAlign="Right" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="new_postageused" DataFormatString="{0:N}" FilterControlWidth="45px" DataType="System.Decimal" HeaderText="Total Postage Used" UniqueName="TotalPostageUsed"> <ItemStyle HorizontalAlign="Right" /> <HeaderStyle HorizontalAlign="Right" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="new_endingcredit" DataFormatString="{0:N}" FilterControlWidth="45px" DataType="System.Decimal" HeaderText="Ending Credit" UniqueName="EndingCredit"> <ItemStyle HorizontalAlign="Right" /> <HeaderStyle HorizontalAlign="Right" /> </telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid> </telerik:RadAjaxPanel> <%--<CommandItemSettings ShowAddNewRecordButton="False" ShowExportToCsvButton="True" ShowExportToExcelButton="True" ShowExportToPdfButton="True" ShowExportToWordButton="True" />--%></asp:Content><asp:Content ID="Content8" ContentPlaceHolderID="Scripts" runat="server"></asp:Content>
C# code behind it:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Site.Pages;using Telerik.Web.UI;using Xrm;using Microsoft.Xrm.Sdk;using Microsoft.Xrm.Sdk.Query;using System.Data;using System.Globalization;using System.Threading;namespace Site.Areas.Reports.PostageReport{ public partial class PostageReport : PortalPage { private DateTime df; private DateTime dt; private string _guid; public void Button2_Click(object sender, ImageClickEventArgs e) { // TODO: Implement this method throw new NotImplementedException(); } public void RadGrid1_SortCommand(object sender, GridSortCommandEventArgs e) { // TODO: Implement this method throw new NotImplementedException(); } protected void Page_Load(object sender, EventArgs e) { RedirectToLoginIfAnonymous(); } protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e) { (sender as RadGrid).DataSource = GetDataTable(); } protected void RadGrid1_FilterCheckListItemsRequested(object sender, GridFilterCheckListItemsRequestedEventArgs e) { string DataField = (e.Column as IGridDataColumn).GetActiveDataField(); e.ListBox.DataSource = GetDistinctColumn(DataField); e.ListBox.DataKeyField = DataField; e.ListBox.DataTextField = DataField; e.ListBox.DataValueField = DataField; e.ListBox.DataBind(); } public void ParseParameters() { if (Request.QueryString["df"] != null) { df = Convert.ToDateTime(Request.QueryString["df"]).AddDays(1).AddDays(-1); } else { // Default is from date two years back df = DateTime.Today.AddDays(-730); } if (Request.QueryString["dt"] != null) { dt = Convert.ToDateTime(Request.QueryString["dt"]).AddDays(1).AddTicks(-1); } else { df = DateTime.Today; } if (Request.QueryString["id"] != null) { _guid = Request.QueryString["id"]; }else { _guid = "all"; } } public DataTable GetDistinctColumn(string columnName) { DataTable dTable = new DataTable(); var xrm = new Xrm.XrmServiceContext("Xrm"); ParseParameters(); lblDf.Text = df.ToShortDateString(); lblDt.Text = dt.ToShortDateString(); Xrm.Account account = new Xrm.Account(); if (_guid == "all") { account = xrm.Retrieve(Xrm.Account.EntityLogicalName, Contact.ParentCustomerId.Id, new ColumnSet(true)).ToEntity<Xrm.Account>(); } else { Guid _account = new Guid(_guid); account = xrm.Retrieve(Xrm.Account.EntityLogicalName, _account, new ColumnSet(true)).ToEntity<Xrm.Account>(); } dTable.Columns.Add(columnName); QueryExpression query = new QueryExpression(); query.EntityName = "new_tdcdata"; query.ColumnSet.AddColumn(columnName); query.Distinct = true; query.Criteria = new Microsoft.Xrm.Sdk.Query.FilterExpression(); if (_guid == "all") { query.Criteria.AddCondition("new_account",ConditionOperator.Equal,account.Id); } else { query.Criteria.AddCondition("new_customernumberid",ConditionOperator.Equal,account.Id); } Microsoft.Xrm.Sdk.Query.FilterExpression childFilter = query.Criteria.AddFilter(LogicalOperator.And); childFilter.AddCondition("new_entrydate", ConditionOperator.Between, df, dt); EntityCollection results = xrm.RetrieveMultiple(query); foreach (var c in results.Entities) { DataRow row = dTable.NewRow(); if (columnName == "new_entrydate") { row[columnName] = c.GetAttributeValue<DateTime>(columnName).ToString("M/dd/yyyy", CultureInfo.InvariantCulture); } else { if (columnName == "new_customernumberid") { Guid _account = c.GetAttributeValue<Guid>(columnName); account = xrm.Retrieve(Xrm.Account.EntityLogicalName, _account, new ColumnSet(true)).ToEntity<Xrm.Account>(); row[columnName] = account.Name; } else { row[columnName] = c.GetAttributeValue<string>(columnName); } } dTable.Rows.Add(row); } return (dTable); } public DataTable GetDataTable() { DataTable dTable = new DataTable(); var xrm = new Xrm.XrmServiceContext("Xrm"); ParseParameters(); lblDf.Text = df.ToShortDateString(); lblDt.Text = dt.ToShortDateString(); Xrm.Account account = new Xrm.Account(); if (_guid == "all") { account = xrm.Retrieve(Xrm.Account.EntityLogicalName, Contact.ParentCustomerId.Id, new ColumnSet(true)).ToEntity<Xrm.Account>(); } else { Guid _account = new Guid(_guid); account = xrm.Retrieve(Xrm.Account.EntityLogicalName, _account, new ColumnSet(true)).ToEntity<Xrm.Account>(); } RadGrid1.ExportSettings.FileName = string.Format("{0}-{1}-{2}-{3}-{4}", "PostageReport", account.Name, df.ToShortDateString().Replace("/", ""), dt.ToShortDateString().Replace("/", ""), DateTime.Now.ToString("yyyyMMddHHmmss")); dTable.Columns.Add("new_entrynumber", typeof(Int32)); dTable.Columns.Add("new_entrydate", typeof(DateTime)); dTable.Columns.Add("new_account"); dTable.Columns.Add("new_customernumberid"); dTable.Columns.Add("new_costcenter"); dTable.Columns.Add("new_installname"); dTable.Columns.Add("new_installaddress"); dTable.Columns.Add("new_installcity"); dTable.Columns.Add("new_installstate"); dTable.Columns.Add("new_installzip"); dTable.Columns.Add("new_serialnumber"); dTable.Columns.Add("new_entrydescription"); dTable.Columns.Add("new_entryamount",typeof(decimal)); dTable.Columns.Add("new_startingcredit", typeof(decimal)); dTable.Columns.Add("new_startingdebit", typeof(decimal)); dTable.Columns.Add("new_entrychecknumber"); dTable.Columns.Add("new_numberimprints",typeof(Int32)); dTable.Columns.Add("new_postageused", typeof(decimal)); dTable.Columns.Add("new_endingcredit", typeof(decimal)); dTable.Columns.Add("new_endingdebit", typeof(decimal)); //dTable.Columns.Add("Price Group"); IQueryable<new_tdcdata> stmt; //xrm.new_tdcdataSet.Where(t => t.new_Account.Id == account.Id); if (_guid == "all") { stmt = xrm.new_tdcdataSet.Where(t => t.new_Account.Id == account.Id && t.new_entryDate >= df && t.new_entryDate <= dt); } else { stmt = xrm.new_tdcdataSet.Where(t => t.new_CustomerNumberId.Id == account.Id && t.new_entryDate >= df && t.new_entryDate <= dt); } Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyNegativePattern = 1; foreach (var s in stmt) { // List<string> row = new List<string>(); DataRow row = dTable.NewRow(); row["new_entrynumber"] = s.new_entryNumber; row["new_entrydate"] = s.new_entryDate; row["new_account"] = (s.new_Account.Name ?? ""); row["new_customernumberid"] = (s.new_CustomerNumberId.Name ?? ""); row["new_costcenter"] = (s.new_CostCenter ?? ""); row["new_installname"] = (s.new_InstallName ?? ""); row["new_installaddress"] = (s.new_InstallAddress ?? ""); row["new_installcity"] =(s.new_InstallCity ?? ""); row["new_installstate"] = (s.new_InstallState ?? ""); row["new_installzip"] = (s.new_InstallZip ?? ""); row["new_serialnumber"] = (s.new_serialNumber ?? "n/a"); //row.Add(string.Format("{0} {1}", s.new_entryDescription ?? "", s.new_entryDescription2 ?? "")); row["new_entrydescription"] = (string.Format("{0}", s.new_entryDescription ?? "")); row["new_entryamount"] = s.new_entryAmount; row["new_startingcredit"] = s.new_startingCredit; row["new_startingdebit"] = s.new_startingDebit; row["new_entrychecknumber" ] = (s.new_entryCheckNumber ?? "--"); row["new_numberimprints"] = s.new_numberImprints; row["new_postageused"] = s.new_postageUsed; row["new_endingcredit"] = s.new_endingCredit; row["new_endingdebit"] = s.new_endingDebit; dTable.Rows.Add(row); } return (dTable); } }}