This is a migrated thread and some comments may be shown as answers.

[Solved] Filter Template for GridDateTimeColumn - Progammtic

2 Answers 226 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Ravi AG
Top achievements
Rank 1
Ravi AG asked on 17 Nov 2009, 05:20 PM
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?

 
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

2 Answers, 1 is accepted

Sort by
0
Pavel
Telerik team
answered on 23 Nov 2009, 12:13 PM
Hello Ravi,

Currently filter templates are not supported for GridDateTimeColumn. You can use GridBoundColumn instead.

Regards,
Pavel
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
0
Rohit
Top achievements
Rank 1
answered on 14 Jan 2010, 07:39 AM
We are also running into the same scenario. Please send me the code which you have written to solve your scenario.

Please share GridComboFilterTemplate, GridSliderFilterTemplate and the code where you have integrated FilterTemplate with the Rad Grid.

Regards
Rohit
Tags
Grid
Asked by
Ravi AG
Top achievements
Rank 1
Answers by
Pavel
Telerik team
Rohit
Top achievements
Rank 1
Share this question
or