Hi,
I am using a RadGrid. For this grid AutogenerateColumn = true. I will bind the grid dynamically.
And i am adding FilterTemplate for the columns in "rgridList_ColumnCreated" event.
I have customized the Filters i.e) For String Columns the filter may be 'TextBox' or 'Combo' based on a condition.
For numeric columns filter will be a slider. for this i am have created my own classes which will inherit "ITemplate"
i.e) I have created following classes
GridTextBoxFilterTemplate : ITemplate [ For Textbox Filter ]
GridComboFilterTemplate : ITemplate [ For Combo Filter ]
GridSliderFilterTemplate :ITemplate [ For Slider Filter ]
These filters are working properly
Similarly i have created a class(GridDatePickerFilterTemplate), to filter grid records based on a DateTime column
If i add Filter template for a datetime column it is not added. I don't know y?
Help me in this.........
How to add a FilterTemplate for a 'GridDateTimeColumn' by programmatic?
Thanks,
Ravi AG
I am using a RadGrid. For this grid AutogenerateColumn = true. I will bind the grid dynamically.
And i am adding FilterTemplate for the columns in "rgridList_ColumnCreated" event.
I have customized the Filters i.e) For String Columns the filter may be 'TextBox' or 'Combo' based on a condition.
For numeric columns filter will be a slider. for this i am have created my own classes which will inherit "ITemplate"
i.e) I have created following classes
GridTextBoxFilterTemplate : ITemplate [ For Textbox Filter ]
GridComboFilterTemplate : ITemplate [ For Combo Filter ]
GridSliderFilterTemplate :ITemplate [ For Slider Filter ]
These filters are working properly
Similarly i have created a class(GridDatePickerFilterTemplate), to filter grid records based on a DateTime column
If i add Filter template for a datetime column it is not added. I don't know y?
| protected void rgridList_ColumnCreated(object source, Telerik.Web.UI.GridColumnCreatedEventArgs e){ |
| switch (e.Column.ColumnType) { |
| case "GridBoundColumn": |
| GridBoundColumn boundColumn = e.Column as GridBoundColumn; |
| GridTextBoxFilterTemplate lObjTextBoxFilterTemplate; |
| GridComboFilterTemplate lObjComboFilterTemplate; |
| GridSliderFilterTemplate lObjSliderFilterTemplate; |
| GridDatePickerFilterTemplate lObjRadDateTimePicker; |
| if (boundColumn.DataType == Type.GetType("System.String")){ |
| if(dtSource.DefaultView.ToTable(true, boundColumn.UniqueName).Rows.Count > WebConfig.TextBoxFilter){ |
| //To add textbox as in filter template for string columns |
| lObjTextBoxFilterTemplate = new GridTextBoxFilterTemplate(); |
| lObjTextBoxFilterTemplate.ColumnName = boundColumn.UniqueName; |
| if (htFilter[boundColumn.UniqueName] != null) |
| //To maintain existing filter value |
| lObjTextBoxFilterTemplate.FilterValue = Convert.ToString(htFilter[boundColumn.UniqueName]); |
| else |
| lObjTextBoxFilterTemplate.FilterValue = ""; |
| lObjTextBoxFilterTemplate.TableViewClientId = rgridList.MasterTableView.ClientID; |
| boundColumn.FilterTemplate = lObjTextBoxFilterTemplate; |
| } |
| else{ |
| //To add combo as in filter template for string columns |
| lObjComboFilterTemplate = new GridComboFilterTemplate(); |
| dtSource.DefaultView.Sort = boundColumn.UniqueName; |
| lObjComboFilterTemplate.DataSource = dtSource.DefaultView.ToTable(true, boundColumn.UniqueName); |
| lObjComboFilterTemplate.DataTextField = boundColumn.UniqueName; |
| lObjComboFilterTemplate.DataValueField = boundColumn.UniqueName; |
| if (htFilter[boundColumn.UniqueName] != null) |
| //To maintain existing filter value |
| lObjComboFilterTemplate.FilterValue = Convert.ToString(htFilter[boundColumn.UniqueName]);//boundColumn.CurrentFilterValue |
| lObjComboFilterTemplate.TableViewClientId = rgridList.MasterTableView.ClientID; |
| boundColumn.FilterTemplate = lObjComboFilterTemplate; |
| } |
| } |
| else if (boundColumn.DataType == Type.GetType("System.Int16") || |
| boundColumn.DataType == Type.GetType("System.Int32") || |
| boundColumn.DataType == Type.GetType("System.Int64") || |
| boundColumn.DataType == Type.GetType("System.Decimal") || |
| boundColumn.DataType == Type.GetType("System.Double")){ |
| //To add slider in filter template for numeric columns |
| lObjSliderFilterTemplate = new GridSliderFilterTemplate(); |
| lObjSliderFilterTemplate.ColumnName = boundColumn.UniqueName; |
| lObjSliderFilterTemplate.StartValue = Convert.ToInt32(Session["startSlider"]); |
| lObjSliderFilterTemplate.EndValue = Convert.ToInt32(Session["endSlider"]); |
| dtSource.DefaultView.Sort = boundColumn.HeaderText + " DESC"; |
| //DataRow dr = dtSource.Select("Max('[" + boundColumn.HeaderText + "]')")[0]; |
| lObjSliderFilterTemplate.MaxValue = Convert.ToInt32(dtSource.DefaultView[0][boundColumn.HeaderText]); |
| boundColumn.FilterTemplate = lObjSliderFilterTemplate; |
| } |
| break; |
| case "GridDateTimeColumn": |
| //To assign DataFormatString for DateTime columns |
| GridDateTimeColumn dateColumn = e.Column as GridDateTimeColumn; |
| dateColumn.DataFormatString = "{0:MM/dd/yyyy}"; |
| //To add filter template |
| lObjRadDateTimePicker = new GridDatePickerFilterTemplate(); |
| lObjRadDateTimePicker.ColumnName = dateColumn.UniqueName; |
| if (htFilter[dateColumn.UniqueName] != null) |
| //To maintain existing filter value |
| lObjRadDateTimePicker.FilterValue = Convert.ToString(htFilter[dateColumn.UniqueName]); |
| else |
| lObjRadDateTimePicker.FilterValue = ""; |
| lObjRadDateTimePicker.TableViewClientId = rgridList.MasterTableView.ClientID; |
| dateColumn.FilterTemplate = lObjRadDateTimePicker; |
| break; |
| } |
| } |
Help me in this.........
How to add a FilterTemplate for a 'GridDateTimeColumn' by programmatic?
Thanks,
Ravi AG