Hi there,
I've a simple RadGrid which is bound through an objectDataSource. I've a couple of columns which are bound, using DataField attribute, to the properties of type returned by ObjectDataSource bound method.
While the data that is being displayed on the grid is formatted in the backend using the ItemDataBound
method.
Code behind
I would like to let users filter the displayed text in the formatted columns instead of the DataField.
ie. if the DataField value was say "14" while the displayed text post formatting is "[14] BiWeekly"
I would like to display the row if user types "week" in the filter control.
Any suggestions or pointers will be appreciated.
Thanks in advance.
Regards,
I've a simple RadGrid which is bound through an objectDataSource. I've a couple of columns which are bound, using DataField attribute, to the properties of type returned by ObjectDataSource bound method.
<
telerik:RadGrid
ID
=
"RGTasks"
AllowPaging
=
"True"
runat
=
"server"
AutoGenerateColumns
=
"False"
GridLines
=
"None"
CellSpacing
=
"0"
DataSourceID
=
"ObjectDataSource1"
Skin
=
"Outlook"
PageSize
=
"10"
style
=
"width:100%; height:100%;"
onitemdatabound
=
"RGTasks_ItemDataBound"
AllowFilteringByColumn
=
"true"
AllowSorting
=
"true"
onitemcommand
=
"RGTasks_ItemCommand"
>
<
MasterTableView
DataKeyNames
=
"RuleScheduleKey"
AutoGenerateColumns
=
"false"
CommandItemDisplay
=
"Top"
EditMode
=
"EditForms"
AllowAutomaticUpdates
=
"true"
AllowAutomaticInserts
=
"false"
AllowFilteringByColumn
=
"true"
>
<
EditFormSettings
EditFormType
=
"WebUserControl"
UserControlName
=
"../Controls/EditRule.ascx"
/>
<
CommandItemSettings
ExportToPdfText
=
"Export to PDF"
AddNewRecordText
=
"Add Task"
></
CommandItemSettings
>
<
RowIndicatorColumn
FilterControlAltText
=
"Filter RowIndicator column"
></
RowIndicatorColumn
>
<
ExpandCollapseColumn
FilterControlAltText
=
"Filter ExpandColumn column"
></
ExpandCollapseColumn
>
<
AlternatingItemStyle
BackColor
=
"#EDF1FF"
/>
<
Columns
>
<
telerik:GridBoundColumn
FilterControlAltText
=
"Filter column2 column"
UniqueName
=
"column2"
DataField
=
"RuleScheduleKey"
HeaderText
=
"Task"
HeaderStyle-Font-Bold
=
"true"
HeaderStyle-HorizontalAlign
=
"Center"
AllowFiltering
=
"false"
>
<
HeaderStyle
HorizontalAlign
=
"Center"
Font-Bold
=
"True"
></
HeaderStyle
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
FilterControlAltText
=
"Filter column1 column"
UniqueName
=
"colRule"
DataField
=
"RuleKey"
HeaderText
=
"Rule"
HeaderStyle-Font-Bold
=
"true"
HeaderStyle-HorizontalAlign
=
"Center"
CurrentFilterFunction
=
"Contains"
ShowFilterIcon
=
"false"
AutoPostBackOnFilter
=
"true"
>
<
HeaderStyle
HorizontalAlign
=
"Center"
Font-Bold
=
"True"
></
HeaderStyle
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"ScheduleKey"
HeaderText
=
"Schedule"
UniqueName
=
"ScheduleKey"
FilterControlAltText
=
"Filter column6 column"
AllowFiltering
=
"false"
>
<
HeaderStyle
Font-Bold
=
"True"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridDateTimeColumn
FilterControlAltText
=
"Filter column5 column"
UniqueName
=
"column5"
DataField
=
"NextRunTimestamp"
HeaderText
=
"Next Run"
ItemStyle-Width
=
"10%"
HeaderStyle-Font-Bold
=
"true"
HeaderStyle-HorizontalAlign
=
"Center"
ReadOnly
=
"true"
AllowFiltering
=
"false"
>
<
HeaderStyle
Font-Bold
=
"True"
HorizontalAlign
=
"Center"
/>
<
ItemStyle
Width
=
"10%"
/>
</
telerik:GridDateTimeColumn
>
<
telerik:GridDateTimeColumn
DataField
=
"LastRunTimestamp"
FilterControlAltText
=
"Filter column column"
HeaderText
=
"Last Run"
UniqueName
=
"column"
AllowFiltering
=
"false"
>
<
HeaderStyle
Font-Bold
=
"True"
/>
</
telerik:GridDateTimeColumn
>
<
telerik:GridBoundColumn
FilterControlAltText
=
"Filter column4 column"
UniqueName
=
"column4"
DataField
=
"LastRunStatus"
HeaderText
=
"Last Run Status"
HeaderStyle-Font-Bold
=
"true"
HeaderStyle-HorizontalAlign
=
"Center"
CurrentFilterFunction
=
"Contains"
ShowFilterIcon
=
"false"
>
<
HeaderStyle
HorizontalAlign
=
"Center"
Font-Bold
=
"True"
></
HeaderStyle
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
FilterControlAltText
=
"Filter column3 column"
UniqueName
=
"column3"
DataField
=
"CreatedById"
HeaderText
=
"Created By"
HeaderStyle-Font-Bold
=
"true"
HeaderStyle-HorizontalAlign
=
"Center"
ReadOnly
=
"true"
CurrentFilterFunction
=
"StartsWith"
ShowFilterIcon
=
"false"
DataType
=
"System.String"
AutoPostBackOnFilter
=
"true"
>
<
HeaderStyle
Font-Bold
=
"True"
HorizontalAlign
=
"Center"
/>
</
telerik:GridBoundColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
></
EditColumn
>
</
EditFormSettings
>
</
MasterTableView
>
<
PagerStyle
PagerTextFormat
=
"{0} / {1}"
/>
<
FilterMenu
EnableImageSprites
=
"False"
></
FilterMenu
>
<
HeaderContextMenu
CssClass
=
"GridContextMenu GridContextMenu_Default"
></
HeaderContextMenu
>
</
telerik:RadGrid
>
<
asp:ObjectDataSource
ID
=
"ObjectDataSource1"
runat
=
"server"
SelectMethod
=
"GetAllRuleSchedulesByUserID"
TypeName
=
"DataAccessHelper"
onselecting
=
"ObjectDataSource1_Selecting"
DataObjectTypeName
=
"Datasets.RuleSchedule"
>
<
SelectParameters
>
<
asp:Parameter
Name
=
"userID"
Type
=
"String"
/>
<
asp:SessionParameter
SessionField
=
"IsUserAdmin"
Name
=
"isAdmin"
Type
=
"Boolean"
DefaultValue
=
"false"
/>
</
SelectParameters
>
</
asp:ObjectDataSource
>
While the data that is being displayed on the grid is formatted in the backend using the ItemDataBound
method.
Code behind
protected
void
RGTasks_ItemDataBound(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
if
((e.Item.ItemType == Telerik.Web.UI.GridItemType.Item) ||
(e.Item.ItemType == Telerik.Web.UI.GridItemType.AlternatingItem))
{
try
{
RuleSchedule rs =
new
RuleSchedule();
rs = (RuleSchedule)e.Item.DataItem;
BusinessRule br = DataAccessHelper.GetBusinessRule(rs.RuleKey);
if
(!
string
.IsNullOrEmpty(br.Name))
{
e.Item.Cells[5].Text =
"["
+ e.Item.Cells[5].Text +
"] "
+ br.Name;
}
Schedule sc = DataAccessHelper.GetSchedule(rs.ScheduleKey);
if
(!
string
.IsNullOrEmpty(sc.RecurrenceTypeCd))
{
e.Item.Cells[6].Text =
"["
+ e.Item.Cells[6].Text +
"] "
+ sc.RecurrenceTypeCd;
}
}
catch
{
}
}
}
I would like to let users filter the displayed text in the formatted columns instead of the DataField.
ie. if the DataField value was say "14" while the displayed text post formatting is "[14] BiWeekly"
I would like to display the row if user types "week" in the filter control.
Any suggestions or pointers will be appreciated.
Thanks in advance.
Regards,