I'm in the process of implementing a grid that requires the FilterCheckList (like Excel) and BatchEditing (which requires GridTemplateColumn). In the grid below, the columns State & FullName work just fine, but once i turned the column "Days" into a template column, the filtering on that column stopped working. Any ideas? Currently using 2014.1.225.40. Thanks!
ASP.NET
<
telerik:RadGrid
ID
=
"gridData"
runat
=
"server"
Skin
=
"Telerik"
OnNeedDataSource
=
"NeedDataSource_Data"
AutoGenerateColumns
=
"false"
AllowSorting
=
"true"
AllowFilteringByColumn
=
"true"
ShowHeader
=
"true"
ShowFooter
=
"true"
Width
=
"100%"
OnFilterCheckListItemsRequested
=
"RadGrid1_FilterCheckListItemsRequested"
FilterType
=
"CheckList"
GridLines
=
"Both"
AllowPaging
=
"false"
>
<
GroupingSettings
CaseSensitive
=
"false"
/>
<
MasterTableView
DataKeyNames
=
"ID, Days"
CommandItemDisplay
=
"Top"
EditMode
=
"Batch"
>
<
BatchEditingSettings
EditType
=
"Row"
/>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"FullName"
SortExpression
=
"FullName"
HeaderText
=
"Name"
FilterCheckListEnableLoadOnDemand
=
"true"
AutoPostBackOnFilter
=
"true"
CurrentFilterFunction
=
"Contains"
ShowFilterIcon
=
"false"
></
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
DataField
=
"Days"
HeaderText
=
"Idle"
FilterCheckListEnableLoadOnDemand
=
"true"
AllowFiltering
=
"true"
SortExpression
=
"Days"
AutoPostBackOnFilter
=
"true"
UniqueName
=
"Days"
>
<
ItemTemplate
>
<%# DataBinder.Eval(Container.DataItem, "Days") %>
</
ItemTemplate
>
<
EditItemTemplate
>
<%# DataBinder.Eval(Container.DataItem, "Days") %>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"State"
HeaderText
=
"State"
FilterCheckListEnableLoadOnDemand
=
"true"
></
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
C#
protected void RadGrid1_FilterCheckListItemsRequested(object sender, GridFilterCheckListItemsRequestedEventArgs e)
{
string DataField = e.Column.DataField;
DataSet ds = (DataSet)Cache[cacheKey];
List<
object
> list = (from row in ds.Tables[0].AsEnumerable() select row[DataField]).Distinct().ToList();
DataTable dtResults = new DataTable();
dtResults.Columns.Add(DataField);
DataRow drResult;
foreach(object obj in list)
{
drResult = dtResults.NewRow();
drResult[DataField] = obj;
dtResults.Rows.Add(drResult);
}
e.ListBox.DataSource = dtResults.AsEnumerable().Where(x => !x[DataField].ToString().IsNullOrEmpty()).OrderBy(y => y[DataField]).CopyToDataTable();
e.ListBox.DataKeyField = DataField;
e.ListBox.DataTextField = DataField;
e.ListBox.DataValueField = DataField;
e.ListBox.DataBind();
}