diff --git a/PermanentDropDownListEditorInFilterCell/Description.md b/PermanentDropDownListEditorInFilterCell/Description.md
new file mode 100644
index 0000000..0da5c57
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/Description.md
@@ -0,0 +1,16 @@
+## Environment
+
+
+ Product Version |
+ 2018.1 220 |
+
+
+ Product |
+ RadGridView for WinForms |
+
+
+
+
+## Description
+
+This solution provides a C# and a VB.NET project demonstrating how to embed a permanent **RadDropDownListElement** to manage filtering. A complete step by step tutorial is available in the [Permanent editor in a filter cell](https://docs.telerik.com/devtools/winforms/knowledge-base/gridview-permanenteditor-in-filter-cell) article.
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell.sln b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell.sln
new file mode 100644
index 0000000..b891886
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PermanentDropDownListEditorInFilterCellCSharp", "PermanentDropDownListEditorInFilterCell\PermanentDropDownListEditorInFilterCellCSharp.csproj", "{E38D7BD8-C198-4AAA-A4E1-9907F1FBA46F}"
+EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "PermanentDropDownListEditorInFilterCellVB", "PermanentDropDownListEditorInFilterCellVB\PermanentDropDownListEditorInFilterCellVB.vbproj", "{51557AE9-2CCF-484C-BC3E-B7B147619081}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {E38D7BD8-C198-4AAA-A4E1-9907F1FBA46F}.Debug|x86.ActiveCfg = Debug|x86
+ {E38D7BD8-C198-4AAA-A4E1-9907F1FBA46F}.Debug|x86.Build.0 = Debug|x86
+ {E38D7BD8-C198-4AAA-A4E1-9907F1FBA46F}.Release|x86.ActiveCfg = Release|x86
+ {E38D7BD8-C198-4AAA-A4E1-9907F1FBA46F}.Release|x86.Build.0 = Release|x86
+ {51557AE9-2CCF-484C-BC3E-B7B147619081}.Debug|x86.ActiveCfg = Debug|x86
+ {51557AE9-2CCF-484C-BC3E-B7B147619081}.Debug|x86.Build.0 = Debug|x86
+ {51557AE9-2CCF-484C-BC3E-B7B147619081}.Release|x86.ActiveCfg = Release|x86
+ {51557AE9-2CCF-484C-BC3E-B7B147619081}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell.suo b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell.suo
new file mode 100644
index 0000000..75b67bc
Binary files /dev/null and b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell.suo differ
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell.v11.suo b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell.v11.suo
new file mode 100644
index 0000000..2f7c7ca
Binary files /dev/null and b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell.v11.suo differ
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/CustomColumn.cs b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/CustomColumn.cs
new file mode 100644
index 0000000..f03d15c
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/CustomColumn.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Telerik.WinControls.UI;
+
+namespace PermanentDropDownListEditorInFilterCell
+{
+ class CustomColumn : GridViewTextBoxColumn
+ {
+ public override Type GetCellType(GridViewRowInfo row)
+ {
+ if (row is GridViewFilteringRowInfo)
+ {
+ return typeof(DropDownGridFilterCellElement);
+ }
+ return base.GetCellType(row);
+ }
+ }
+}
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/DropDownGridFilterCellElement.cs b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/DropDownGridFilterCellElement.cs
new file mode 100644
index 0000000..7045a67
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/DropDownGridFilterCellElement.cs
@@ -0,0 +1,124 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using Telerik.WinControls;
+using Telerik.WinControls.Layouts;
+using Telerik.WinControls.UI;
+
+namespace PermanentDropDownListEditorInFilterCell
+{
+ class DropDownGridFilterCellElement : GridFilterCellElement
+ {
+ RadDropDownListElement dropDown;
+ LightVisualElement operatorElement;
+ StackLayoutPanel container;
+ BindingList filterValues = new BindingList();
+
+ public DropDownGridFilterCellElement(GridViewDataColumn column, GridRowElement row) : base(column, row)
+ {
+ }
+
+ BindingContext bc = new BindingContext();
+
+ protected override void CreateChildElements()
+ {
+ base.CreateChildElements();
+ operatorElement = new LightVisualElement();
+ container = new StackLayoutPanel();
+ dropDown = new RadDropDownListElement();
+
+ dropDown.BindingContext = bc;
+ dropDown.DropDownStyle = RadDropDownStyle.DropDownList;
+ dropDown.SelectedIndexChanged += dropDown_SelectedIndexChanged;
+
+ this.Children.Add(container);
+ container.Children.Add(operatorElement);
+ container.Children.Add(dropDown);
+ }
+
+ private void dropDown_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
+ {
+ GridViewDataColumn dataColumn = this.ColumnInfo as GridViewDataColumn;
+
+ if (dataColumn.FilterDescriptor == null)
+ {
+ dataColumn.FilterDescriptor = new Telerik.WinControls.Data.FilterDescriptor(this.ColumnInfo.Name, Telerik.WinControls.Data.FilterOperator.Contains, null);
+ dataColumn.FilterDescriptor.IsFilterEditor = true;
+ }
+ if (e.Position > -1)
+ {
+ this.Value = dropDown.Items[e.Position].Text;
+ this.RowInfo.Tag = e.Position;
+ dataColumn.FilterDescriptor.Value = this.Value;
+ }
+ if (e.Position == 0)
+ {
+ dataColumn.FilterDescriptor = null;
+ }
+ }
+
+ public override void Detach()
+ {
+ dropDown.SelectedIndexChanged -= dropDown_SelectedIndexChanged;
+ base.Detach();
+ }
+
+ protected override void SetContentCore(object value)
+ {
+ base.SetContentCore(value);
+
+ GridViewDataColumn dataColumn = this.ColumnInfo as GridViewDataColumn;
+ if (dropDown.DataSource == null)
+ {
+ filterValues.Add("No filter");
+ foreach (string distinctValue in dataColumn.DistinctValues)
+ {
+ filterValues.Add(distinctValue);
+ }
+ dropDown.SelectedIndexChanged -= dropDown_SelectedIndexChanged;
+ dropDown.DataSource = filterValues;
+
+ dropDown.SelectedIndex = 0;
+ dropDown.SelectedIndexChanged += dropDown_SelectedIndexChanged;
+ }
+ this.DrawText = false;
+ this.ForeColor = Color.Transparent;
+ operatorElement.ForeColor = Color.Black;
+
+ if (this.RowInfo.Tag != null && this.RowInfo.Tag.ToString() != dropDown.SelectedIndex.ToString())
+ {
+ dropDown.SelectedIndexChanged -= dropDown_SelectedIndexChanged;
+ //synchronize the selected option
+ dropDown.SelectedIndex = (int)this.RowInfo.Tag;
+ dropDown.SelectedIndexChanged += dropDown_SelectedIndexChanged;
+ }
+
+ if (dataColumn != null && dataColumn.FilterDescriptor != null)
+ {
+ //synchronize the filter operator
+ this.operatorElement.Text = dataColumn.FilterDescriptor.Operator.ToString();
+ }
+ else
+ {
+ dropDown.SelectedIndexChanged -= dropDown_SelectedIndexChanged;
+ dropDown.SelectedIndex = 0;
+ dropDown.SelectedIndexChanged += dropDown_SelectedIndexChanged;
+ }
+ }
+
+ //hide the default filter button
+ protected override void UpdateFilterButtonVisibility(bool enabled)
+ {
+ enabled = false;
+ base.UpdateFilterButtonVisibility(enabled);
+ }
+
+ public override bool IsCompatible(GridViewColumn data, object context)
+ {
+ return data is CustomColumn && context is GridViewFilteringRowInfo;
+ }
+ }
+}
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellCSharp.csproj b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellCSharp.csproj
new file mode 100644
index 0000000..ef7cbbf
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellCSharp.csproj
@@ -0,0 +1,97 @@
+
+
+
+ Debug
+ x86
+ 8.0.30703
+ 2.0
+ {E38D7BD8-C198-4AAA-A4E1-9907F1FBA46F}
+ WinExe
+ Properties
+ PermanentDropDownListEditorInFilterCell
+ PermanentDropDownListEditorInFilterCell
+ v2.0
+ 512
+
+
+ x86
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ x86
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+ C:\Program Files (x86)\Progress\Telerik UI for WinForms R1 2018\Bin\Telerik.WinControls.dll
+ True
+
+
+
+ C:\Program Files (x86)\Progress\Telerik UI for WinForms R1 2018\Bin\Telerik.WinControls.UI.dll
+ True
+
+
+ C:\Program Files (x86)\Progress\Telerik UI for WinForms R1 2018\Bin\TelerikCommon.dll
+ True
+
+
+
+
+
+
+ Form
+
+
+ RadForm1.cs
+
+
+ RadForm1.cs
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Program.cs b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Program.cs
new file mode 100644
index 0000000..9309a12
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Program.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Windows.Forms;
+
+namespace PermanentDropDownListEditorInFilterCell
+{
+ static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new RadForm1());
+ }
+ }
+}
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/AssemblyInfo.cs b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..d4c7f23
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("PermanentDropDownListEditorInFilterCell")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PermanentDropDownListEditorInFilterCell")]
+[assembly: AssemblyCopyright("Copyright © 2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("96a6d831-b75c-4cd3-8d81-b590fcf58c12")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Resources.Designer.cs b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..7c0ba58
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace PermanentDropDownListEditorInFilterCell.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PermanentDropDownListEditorInFilterCell.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Resources.resx b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Settings.Designer.cs b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..83e7f6d
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace PermanentDropDownListEditorInFilterCell.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Settings.settings b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/RadForm1.Designer.cs b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/RadForm1.Designer.cs
new file mode 100644
index 0000000..e6ecd85
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/RadForm1.Designer.cs
@@ -0,0 +1,73 @@
+namespace PermanentDropDownListEditorInFilterCell
+{
+ partial class RadForm1
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ Telerik.WinControls.UI.TableViewDefinition tableViewDefinition1 = new Telerik.WinControls.UI.TableViewDefinition();
+ this.radGridView1 = new Telerik.WinControls.UI.RadGridView();
+ ((System.ComponentModel.ISupportInitialize)(this.radGridView1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.radGridView1.MasterTemplate)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
+ this.SuspendLayout();
+ //
+ // radGridView1
+ //
+ this.radGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.radGridView1.Location = new System.Drawing.Point(0, 0);
+ //
+ //
+ //
+ this.radGridView1.MasterTemplate.ViewDefinition = tableViewDefinition1;
+ this.radGridView1.Name = "radGridView1";
+ this.radGridView1.Size = new System.Drawing.Size(446, 351);
+ this.radGridView1.TabIndex = 0;
+ //
+ // RadForm1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(446, 351);
+ this.Controls.Add(this.radGridView1);
+ this.Name = "RadForm1";
+ //
+ //
+ //
+ this.RootElement.ApplyShapeToControl = true;
+ this.Text = "RadForm1";
+ ((System.ComponentModel.ISupportInitialize)(this.radGridView1.MasterTemplate)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.radGridView1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private Telerik.WinControls.UI.RadGridView radGridView1;
+ }
+}
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/RadForm1.cs b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/RadForm1.cs
new file mode 100644
index 0000000..56ccaef
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/RadForm1.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using Telerik.WinControls.UI;
+
+namespace PermanentDropDownListEditorInFilterCell
+{
+ public partial class RadForm1 : Telerik.WinControls.UI.RadForm
+ {
+ public RadForm1()
+ {
+ InitializeComponent();
+
+ DataTable dt = new DataTable();
+ dt.Columns.Add("Id", typeof(int));
+ dt.Columns.Add("IssueTitle", typeof(string));
+ dt.Columns.Add("Priority", typeof(string));
+ for (int i = 1; i < 20; i++)
+ {
+ if (i % 2 == 0)
+ {
+ dt.Rows.Add(i, "Issue#" + i, "Low");
+ }
+ else
+ {
+ dt.Rows.Add(i, "Issue#" + i, "High");
+ }
+ }
+
+ this.radGridView1.AutoGenerateColumns = false;
+
+ GridViewDecimalColumn idColumn = new GridViewDecimalColumn("Id");
+ this.radGridView1.Columns.Add(idColumn);
+ GridViewTextBoxColumn titleColumn = new GridViewTextBoxColumn("IssueTitle");
+ this.radGridView1.Columns.Add(titleColumn);
+ CustomColumn myColumn = new CustomColumn();
+ myColumn.FieldName = myColumn.Name = myColumn.HeaderText = "Priority";
+ this.radGridView1.Columns.Add(myColumn);
+
+ this.radGridView1.DataSource = dt;
+ this.radGridView1.BestFitColumns(BestFitColumnMode.AllCells);
+ this.radGridView1.EnableFiltering = true;
+
+ this.radGridView1.CellBeginEdit += radGridView1_CellBeginEdit;
+ }
+
+ private void radGridView1_CellBeginEdit(object sender, GridViewCellCancelEventArgs e)
+ {
+ if (e.Row is GridViewFilteringRowInfo && e.Column.Name == "Priority")
+ {
+ e.Cancel = true;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/RadForm1.resx b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/RadForm1.resx
new file mode 100644
index 0000000..7080a7d
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCell/RadForm1.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/App.config b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/App.config
new file mode 100644
index 0000000..4e5257e
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/CustomColumn.vb b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/CustomColumn.vb
new file mode 100644
index 0000000..93dfe3e
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/CustomColumn.vb
@@ -0,0 +1,11 @@
+Imports Telerik.WinControls.UI
+
+Public Class CustomColumn
+ Inherits GridViewTextBoxColumn
+ Public Overrides Function GetCellType(ByVal row As GridViewRowInfo) As Type
+ If TypeOf row Is GridViewFilteringRowInfo Then
+ Return GetType(DropDownGridFilterCellElement)
+ End If
+ Return MyBase.GetCellType(row)
+ End Function
+End Class
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/DropDownGridFilterCellElement.vb b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/DropDownGridFilterCellElement.vb
new file mode 100644
index 0000000..9ae2e23
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/DropDownGridFilterCellElement.vb
@@ -0,0 +1,85 @@
+Imports Telerik.WinControls.UI
+Imports Telerik.WinControls.Layouts
+Imports System.ComponentModel
+Imports Telerik.WinControls
+
+Public Class DropDownGridFilterCellElement
+ Inherits GridFilterCellElement
+ Private dropDown As RadDropDownListElement
+ Private operatorElement As LightVisualElement
+ Private container As StackLayoutPanel
+ Private filterValues As BindingList(Of String)
+ Private bc As BindingContext
+ Public Sub New(column As GridViewDataColumn, row As GridRowElement)
+ MyBase.New(column, row)
+ End Sub
+ Protected Overrides Sub CreateChildElements()
+ MyBase.CreateChildElements()
+ filterValues = New BindingList(Of String)()
+ bc = New Windows.Forms.BindingContext()
+ operatorElement = New LightVisualElement()
+ container = New StackLayoutPanel()
+ dropDown = New RadDropDownListElement()
+ dropDown.BindingContext = bc
+ dropDown.DropDownStyle = RadDropDownStyle.DropDownList
+ AddHandler dropDown.SelectedIndexChanged, AddressOf dropDown_SelectedIndexChanged
+ Me.Children.Add(container)
+ container.Children.Add(operatorElement)
+ container.Children.Add(dropDown)
+ End Sub
+ Private Sub dropDown_SelectedIndexChanged(ByVal sender As Object, ByVal e As Telerik.WinControls.UI.Data.PositionChangedEventArgs)
+ Dim dataColumn As GridViewDataColumn = TryCast(Me.ColumnInfo, GridViewDataColumn)
+ If dataColumn.FilterDescriptor Is Nothing Then
+ dataColumn.FilterDescriptor = New Telerik.WinControls.Data.FilterDescriptor(Me.ColumnInfo.Name, Telerik.WinControls.Data.FilterOperator.Contains, Nothing)
+ dataColumn.FilterDescriptor.IsFilterEditor = True
+ End If
+ If e.Position > -1 Then
+ Me.Value = dropDown.Items(e.Position).Text
+ Me.RowInfo.Tag = e.Position
+ dataColumn.FilterDescriptor.Value = Me.Value
+ End If
+ If e.Position = 0 Then
+ dataColumn.FilterDescriptor = Nothing
+ End If
+ End Sub
+ Public Overrides Sub Detach()
+ RemoveHandler dropDown.SelectedIndexChanged, AddressOf dropDown_SelectedIndexChanged
+ MyBase.Detach()
+ End Sub
+ Protected Overrides Sub SetContentCore(ByVal value As Object)
+ MyBase.SetContentCore(value)
+ Dim dataColumn As GridViewDataColumn = TryCast(Me.ColumnInfo, GridViewDataColumn)
+ If dropDown.DataSource Is Nothing Then
+ filterValues.Add("No filter")
+ For Each distinctValue As String In dataColumn.DistinctValues
+ filterValues.Add(distinctValue)
+ Next
+ RemoveHandler dropDown.SelectedIndexChanged, AddressOf dropDown_SelectedIndexChanged
+ dropDown.DataSource = filterValues
+ dropDown.SelectedIndex = 0
+ AddHandler dropDown.SelectedIndexChanged, AddressOf dropDown_SelectedIndexChanged
+ End If
+ Me.DrawText = False
+ Me.ForeColor = Color.Transparent
+ operatorElement.ForeColor = Color.Black
+ If Me.RowInfo.Tag IsNot Nothing AndAlso Me.RowInfo.Tag.ToString() <> dropDown.SelectedIndex.ToString() Then
+ RemoveHandler dropDown.SelectedIndexChanged, AddressOf dropDown_SelectedIndexChanged
+ dropDown.SelectedIndex = CInt(Me.RowInfo.Tag)
+ AddHandler dropDown.SelectedIndexChanged, AddressOf dropDown_SelectedIndexChanged
+ End If
+ If dataColumn IsNot Nothing AndAlso dataColumn.FilterDescriptor IsNot Nothing Then
+ Me.operatorElement.Text = dataColumn.FilterDescriptor.[Operator].ToString()
+ Else
+ RemoveHandler dropDown.SelectedIndexChanged, AddressOf dropDown_SelectedIndexChanged
+ dropDown.SelectedIndex = 0
+ AddHandler dropDown.SelectedIndexChanged, AddressOf dropDown_SelectedIndexChanged
+ End If
+ End Sub
+ Protected Overrides Sub UpdateFilterButtonVisibility(ByVal enabled As Boolean)
+ enabled = False
+ MyBase.UpdateFilterButtonVisibility(enabled)
+ End Sub
+ Public Overrides Function IsCompatible(ByVal data As GridViewColumn, ByVal context As Object) As Boolean
+ Return TypeOf data Is CustomColumn AndAlso TypeOf context Is GridViewFilteringRowInfo
+ End Function
+End Class
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Application.Designer.vb b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Application.Designer.vb
new file mode 100644
index 0000000..a5cad16
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Application.Designer.vb
@@ -0,0 +1,38 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.42000
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My
+
+ 'NOTE: This file is auto-generated; do not modify it directly. To make changes,
+ ' or if you encounter build errors in this file, go to the Project Designer
+ ' (go to Project Properties or double-click the My Project node in
+ ' Solution Explorer), and make changes on the Application tab.
+ '
+ Partial Friend Class MyApplication
+
+ _
+ Public Sub New()
+ MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
+ Me.IsSingleInstance = false
+ Me.EnableVisualStyles = true
+ Me.SaveMySettingsOnExit = true
+ Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
+ End Sub
+
+ _
+ Protected Overrides Sub OnCreateMainForm()
+ Me.MainForm = Global.PermanentDropDownListEditorInFilterCellVB.RadForm1
+ End Sub
+ End Class
+End Namespace
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Application.myapp b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Application.myapp
new file mode 100644
index 0000000..f068425
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Application.myapp
@@ -0,0 +1,11 @@
+
+
+ true
+ RadForm1
+ false
+ 0
+ true
+ 0
+ 0
+ true
+
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/AssemblyInfo.vb b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/AssemblyInfo.vb
new file mode 100644
index 0000000..d489083
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/AssemblyInfo.vb
@@ -0,0 +1,35 @@
+Imports System
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' General Information about an assembly is controlled through the following
+' set of attributes. Change these attribute values to modify the information
+' associated with an assembly.
+
+' Review the values of the assembly attributes
+
+
+
+
+
+
+
+
+
+
+'The following GUID is for the ID of the typelib if this project is exposed to COM
+
+
+' Version information for an assembly consists of the following four values:
+'
+' Major Version
+' Minor Version
+' Build Number
+' Revision
+'
+' You can specify all the values or you can default the Build and Revision Numbers
+' by using the '*' as shown below:
+'
+
+
+
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Resources.Designer.vb b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Resources.Designer.vb
new file mode 100644
index 0000000..12cc28d
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Resources.Designer.vb
@@ -0,0 +1,62 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.42000
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My.Resources
+
+ 'This class was auto-generated by the StronglyTypedResourceBuilder
+ 'class via a tool like ResGen or Visual Studio.
+ 'To add or remove a member, edit your .ResX file then rerun ResGen
+ 'with the /str option, or rebuild your VS project.
+ '''
+ ''' A strongly-typed resource class, for looking up localized strings, etc.
+ '''
+ _
+ Friend Module Resources
+
+ Private resourceMan As Global.System.Resources.ResourceManager
+
+ Private resourceCulture As Global.System.Globalization.CultureInfo
+
+ '''
+ ''' Returns the cached ResourceManager instance used by this class.
+ '''
+ _
+ Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
+ Get
+ If Object.ReferenceEquals(resourceMan, Nothing) Then
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("PermanentDropDownListEditorInFilterCellVB.Resources", GetType(Resources).Assembly)
+ resourceMan = temp
+ End If
+ Return resourceMan
+ End Get
+ End Property
+
+ '''
+ ''' Overrides the current thread's CurrentUICulture property for all
+ ''' resource lookups using this strongly typed resource class.
+ '''
+ _
+ Friend Property Culture() As Global.System.Globalization.CultureInfo
+ Get
+ Return resourceCulture
+ End Get
+ Set(ByVal value As Global.System.Globalization.CultureInfo)
+ resourceCulture = value
+ End Set
+ End Property
+ End Module
+End Namespace
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Resources.resx b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Settings.Designer.vb b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Settings.Designer.vb
new file mode 100644
index 0000000..db92842
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Settings.Designer.vb
@@ -0,0 +1,73 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.42000
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My
+
+ _
+ Partial Friend NotInheritable Class MySettings
+ Inherits Global.System.Configuration.ApplicationSettingsBase
+
+ Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
+
+#Region "My.Settings Auto-Save Functionality"
+#If _MyType = "WindowsForms" Then
+ Private Shared addedHandler As Boolean
+
+ Private Shared addedHandlerLockObject As New Object
+
+ _
+ Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
+ If My.Application.SaveMySettingsOnExit Then
+ My.Settings.Save()
+ End If
+ End Sub
+#End If
+#End Region
+
+ Public Shared ReadOnly Property [Default]() As MySettings
+ Get
+
+#If _MyType = "WindowsForms" Then
+ If Not addedHandler Then
+ SyncLock addedHandlerLockObject
+ If Not addedHandler Then
+ AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
+ addedHandler = True
+ End If
+ End SyncLock
+ End If
+#End If
+ Return defaultInstance
+ End Get
+ End Property
+ End Class
+End Namespace
+
+Namespace My
+
+ _
+ Friend Module MySettingsProperty
+
+ _
+ Friend ReadOnly Property Settings() As Global.PermanentDropDownListEditorInFilterCellVB.My.MySettings
+ Get
+ Return Global.PermanentDropDownListEditorInFilterCellVB.My.MySettings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Settings.settings b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Settings.settings
new file mode 100644
index 0000000..85b890b
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/licenses.licx b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/licenses.licx
new file mode 100644
index 0000000..213706b
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/My Project/licenses.licx
@@ -0,0 +1 @@
+Telerik.WinControls.UI.RadGridView, Telerik.WinControls.GridView, Version=2018.1.220.20, Culture=neutral, PublicKeyToken=5bb2a467cbec794e
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/PermanentDropDownListEditorInFilterCellVB.vbproj b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/PermanentDropDownListEditorInFilterCellVB.vbproj
new file mode 100644
index 0000000..bb0fea1
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/PermanentDropDownListEditorInFilterCellVB.vbproj
@@ -0,0 +1,138 @@
+
+
+
+ Debug
+ x86
+
+
+ 2.0
+ {51557AE9-2CCF-484C-BC3E-B7B147619081}
+ WinExe
+ PermanentDropDownListEditorInFilterCellVB.My.MyApplication
+ PermanentDropDownListEditorInFilterCellVB
+ PermanentDropDownListEditorInFilterCellVB
+ 512
+ WindowsForms
+ v2.0
+
+
+ x86
+ true
+ full
+ true
+ true
+ bin\Debug\
+ PermanentDropDownListEditorInFilterCellVB.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ x86
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+ PermanentDropDownListEditorInFilterCellVB.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ On
+
+
+ Binary
+
+
+ Off
+
+
+ On
+
+
+
+
+
+
+
+
+
+ C:\Program Files (x86)\Progress\Telerik UI for WinForms R1 2018\Bin\Telerik.WinControls.dll
+ True
+
+
+
+ C:\Program Files (x86)\Progress\Telerik UI for WinForms R1 2018\Bin\Telerik.WinControls.UI.dll
+ True
+
+
+ C:\Program Files (x86)\Progress\Telerik UI for WinForms R1 2018\Bin\TelerikCommon.dll
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ RadForm1.vb
+ Form
+
+
+
+ RadForm1.vb
+
+
+
+ True
+ Application.myapp
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+ Designer
+
+
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.vb
+
+
+ SettingsSingleFileGenerator
+ My
+ Settings.Designer.vb
+
+
+
+
+
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/RadForm1.Designer.vb b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/RadForm1.Designer.vb
new file mode 100644
index 0000000..2e5eb7c
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/RadForm1.Designer.vb
@@ -0,0 +1,63 @@
+ _
+Partial Class RadForm1
+ Inherits Telerik.WinControls.UI.RadForm
+
+ 'Form overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Dim TableViewDefinition1 As Telerik.WinControls.UI.TableViewDefinition = New Telerik.WinControls.UI.TableViewDefinition()
+ Me.RadGridView1 = New Telerik.WinControls.UI.RadGridView()
+ CType(Me.RadGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.RadGridView1.MasterTemplate, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.SuspendLayout()
+ '
+ 'RadGridView1
+ '
+ Me.RadGridView1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.RadGridView1.Location = New System.Drawing.Point(0, 0)
+ '
+ '
+ '
+ Me.RadGridView1.MasterTemplate.ViewDefinition = TableViewDefinition1
+ Me.RadGridView1.Name = "RadGridView1"
+ Me.RadGridView1.Size = New System.Drawing.Size(446, 351)
+ Me.RadGridView1.TabIndex = 0
+ '
+ 'RadForm1
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(446, 351)
+ Me.Controls.Add(Me.RadGridView1)
+ Me.Name = "RadForm1"
+ '
+ '
+ '
+ Me.RootElement.ApplyShapeToControl = True
+ Me.Text = "RadForm1"
+ CType(Me.RadGridView1.MasterTemplate, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.RadGridView1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents RadGridView1 As Telerik.WinControls.UI.RadGridView
+End Class
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/RadForm1.resx b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/RadForm1.resx
new file mode 100644
index 0000000..7080a7d
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/RadForm1.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/RadForm1.vb b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/RadForm1.vb
new file mode 100644
index 0000000..f9c0fdd
--- /dev/null
+++ b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/RadForm1.vb
@@ -0,0 +1,42 @@
+Imports Telerik.WinControls.UI
+
+Public Class RadForm1
+ Sub New()
+
+ InitializeComponent()
+
+ Dim dt As DataTable = New DataTable()
+ dt.Columns.Add("Id", GetType(Integer))
+ dt.Columns.Add("IssueTitle", GetType(String))
+ dt.Columns.Add("Priority", GetType(String))
+ For i As Integer = 1 To 20 - 1
+ If i Mod 2 = 0 Then
+ dt.Rows.Add(i, "Issue#" & i, "Low")
+ Else
+ dt.Rows.Add(i, "Issue#" & i, "High")
+ End If
+ Next
+ Me.RadGridView1.AutoGenerateColumns = False
+ Dim idColumn As GridViewDecimalColumn = New GridViewDecimalColumn("Id")
+ Me.RadGridView1.Columns.Add(idColumn)
+ Dim titleColumn As GridViewTextBoxColumn = New GridViewTextBoxColumn("IssueTitle")
+ Me.RadGridView1.Columns.Add(titleColumn)
+ Dim myColumn As CustomColumn = New CustomColumn()
+ myColumn.FieldName = "Priority"
+ myColumn.Name = "Priority"
+ myColumn.HeaderText = "Priority"
+ Me.RadGridView1.Columns.Add(myColumn)
+ Me.RadGridView1.DataSource = dt
+ Me.RadGridView1.BestFitColumns(BestFitColumnMode.AllCells)
+ Me.RadGridView1.EnableFiltering = True
+
+ AddHandler Me.RadGridView1.CellBeginEdit, AddressOf radGridView1_CellBeginEdit
+ End Sub
+
+ Private Sub radGridView1_CellBeginEdit(sender As Object, e As GridViewCellCancelEventArgs)
+ If TypeOf e.Row Is GridViewFilteringRowInfo AndAlso e.Column.Name = "Priority" Then
+ e.Cancel = True
+ End If
+ End Sub
+
+End Class
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 0000000..eda4cdd
Binary files /dev/null and b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..6b674d5
Binary files /dev/null and b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll
new file mode 100644
index 0000000..0fd3b7f
Binary files /dev/null and b/PermanentDropDownListEditorInFilterCell/PermanentDropDownListEditorInFilterCellVB/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll differ