Hi Dean,
Ok, I've put togeether a small sample for you. I think in this case it's best to use Custom Filtering and I've also changed slightly the handler to pick up the click event rather than the RadPropertyChanged. All seems to work fine but let me know if you have any questions
Designer File
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial
Class
Form1
Inherits
System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
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.
<System.Diagnostics.DebuggerStepThrough()> _
Private
Sub
InitializeComponent()
Dim
RadListDataItem1
As
Telerik.WinControls.UI.RadListDataItem =
New
Telerik.WinControls.UI.RadListDataItem()
Dim
RadListDataItem2
As
Telerik.WinControls.UI.RadListDataItem =
New
Telerik.WinControls.UI.RadListDataItem()
Dim
RadListDataItem3
As
Telerik.WinControls.UI.RadListDataItem =
New
Telerik.WinControls.UI.RadListDataItem()
Dim
RadListDataItem4
As
Telerik.WinControls.UI.RadListDataItem =
New
Telerik.WinControls.UI.RadListDataItem()
Dim
RadListDataItem5
As
Telerik.WinControls.UI.RadListDataItem =
New
Telerik.WinControls.UI.RadListDataItem()
Me
.RadListControl1 =
New
Telerik.WinControls.UI.RadListControl()
Me
.RadGridView1 =
New
Telerik.WinControls.UI.RadGridView()
CType
(
Me
.RadListControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType
(
Me
.RadGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
Me
.SuspendLayout()
'
'RadListControl1
'
Me
.RadListControl1.CaseSensitiveSort =
True
Me
.RadListControl1.Dock = System.Windows.Forms.DockStyle.Left
RadListDataItem1.Text =
"Available"
RadListDataItem1.TextWrap =
True
RadListDataItem2.Text =
"Unavailable"
RadListDataItem2.TextWrap =
True
RadListDataItem3.Text =
"Busy"
RadListDataItem3.TextWrap =
True
RadListDataItem4.Text =
"Meeting"
RadListDataItem4.TextWrap =
True
RadListDataItem5.Text =
"Holiday"
RadListDataItem5.TextWrap =
True
Me
.RadListControl1.Items.Add(RadListDataItem1)
Me
.RadListControl1.Items.Add(RadListDataItem2)
Me
.RadListControl1.Items.Add(RadListDataItem3)
Me
.RadListControl1.Items.Add(RadListDataItem4)
Me
.RadListControl1.Items.Add(RadListDataItem5)
Me
.RadListControl1.Location =
New
System.Drawing.Point(0, 0)
Me
.RadListControl1.Name =
"RadListControl1"
Me
.RadListControl1.Size =
New
System.Drawing.Size(120, 282)
Me
.RadListControl1.TabIndex = 0
Me
.RadListControl1.Text =
"RadListControl1"
'
'RadGridView1
'
Me
.RadGridView1.Dock = System.Windows.Forms.DockStyle.Fill
Me
.RadGridView1.Location =
New
System.Drawing.Point(120, 0)
Me
.RadGridView1.Name =
"RadGridView1"
Me
.RadGridView1.Size =
New
System.Drawing.Size(204, 282)
Me
.RadGridView1.TabIndex = 0
Me
.RadGridView1.Text =
"RadGridView1"
'
'Form1
'
Me
.AutoScaleDimensions =
New
System.Drawing.SizeF(6.0!, 13.0!)
Me
.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me
.ClientSize =
New
System.Drawing.Size(324, 282)
Me
.Controls.Add(
Me
.RadGridView1)
Me
.Controls.Add(
Me
.RadListControl1)
Me
.Name =
"Form1"
Me
.Text =
"Form1"
CType
(
Me
.RadListControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType
(
Me
.RadGridView1, System.ComponentModel.ISupportInitialize).EndInit()
Me
.ResumeLayout(
False
)
End
Sub
Friend
WithEvents
RadListControl1
As
Telerik.WinControls.UI.RadListControl
Friend
WithEvents
RadGridView1
As
Telerik.WinControls.UI.RadGridView
End
Class
Form1.vb
Imports
System.ComponentModel
Imports
Telerik.WinControls.UI
Imports
Telerik.WinControls
Public
Class
Form1
Private
Sub
Form1_Load(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
Dim
list
As
New
BindingList(Of MyStatus)
list.Add(
New
MyStatus(
"Richard"
,
"Available"
))
list.Add(
New
MyStatus(
"Bob"
,
"Holiday"
))
list.Add(
New
MyStatus(
"Chris"
,
"Holiday"
))
list.Add(
New
MyStatus(
"Stew"
,
"Unavailable"
))
list.Add(
New
MyStatus(
"Pete"
,
"Busy"
))
list.Add(
New
MyStatus(
"Ester"
,
"Busy"
))
list.Add(
New
MyStatus(
"Harriet"
,
"Meeting"
))
list.Add(
New
MyStatus(
"Leisl"
,
"Available"
))
list.Add(
New
MyStatus(
"Tonia"
,
"Busy"
))
Me
.RadGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill
Me
.RadGridView1.EnableFiltering =
True
Me
.RadGridView1.ShowFilteringRow =
False
Me
.RadGridView1.EnableCustomFiltering =
True
Me
.RadListControl1.SelectionMode = SelectionMode.MultiSimple
Me
.RadGridView1.DataSource = list
For
Each
item
As
RadListDataItem
In
Me
.RadListControl1.Items
AddHandler
item.VisualItem.Click,
AddressOf
RadListControl1_ItemClick
Next
End
Sub
Private
Sub
RadListControl1_ItemClick(
ByVal
sender
As
Object
,
ByVal
e
As
EventArgs)
Me
.RadGridView1.MasterTemplate.Refresh()
End
Sub
Private
Sub
RadGridView1_CustomFiltering(
ByVal
sender
As
System.
Object
,
ByVal
e
As
Telerik.WinControls.UI.GridViewCustomFilteringEventArgs)
Handles
RadGridView1.CustomFiltering
If
Me
.RadListControl1.SelectedItems.Count = 0
Then
e.Visible =
True
Return
End
If
e.Visible =
False
Dim
found
As
Boolean
For
Each
item
As
RadListDataItem
In
Me
.RadListControl1.SelectedItems
If
String
.Equals(item.Text, e.Row.Cells(
"Status"
).Value.ToString())
Then
found =
True
Exit
For
End
If
Next
e.Visible = found
End
Sub
End
Class
Public
Class
MyStatus
Public
Sub
New
(
ByVal
name
As
String
,
ByVal
status
As
String
)
Me
.Name = name
Me
.Status = status
End
Sub
Public
Property
Name
As
String
Public
Property
Status
As
String
End
Class
and
here is a small video of it working
Hope that helps
Richard