Hi Telerik,
I want to create a GridViewComboBoxColumn with checkbox items. I found some topics but all not corresponded with my case.
My Xaml code :
<
telerik:RadGridView
x:Name
=
"RadGridViewCommunicationToUsers"
CanUserInsertRows
=
"True"
CanUserFreezeColumns
=
"False"
Grid.Row
=
"1"
CanUserDeleteRows
=
"False"
CanUserReorderColumns
=
"True"
CanUserResizeColumns
=
"True"
CanUserResizeRows
=
"True"
CanUserSelect
=
"True"
CanUserSortColumns
=
"True"
SelectionMode
=
"Single"
SelectionUnit
=
"FullRow"
AutoGenerateColumns
=
"False"
IsFilteringAllowed
=
"False"
RowIndicatorVisibility
=
"Collapsed"
ShowGroupPanel
=
"False"
ScrollViewer.HorizontalScrollBarVisibility
=
"Auto"
ScrollViewer.VerticalScrollBarVisibility
=
"Auto"
NewRowPosition
=
"Top"
ItemsSource
=
"{Binding CustomMessagesScheduled, UpdateSourceTrigger=PropertyChanged}"
CellValidating
=
"RadGridViewCommunicationToUsers_CellValidating"
RowEditEnded
=
"RadGridViewCommunicationToUsers_RowEditEnded"
AddingNewDataItem
=
"RadGridViewCommunicationToUsers_AddingNewDataItem"
RowValidating
=
"RadGridViewCommunicationToUsers_RowValidating"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewComboBoxColumn
UniqueName
=
"Diffusion"
Header
=
"Diffusion"
TextAlignment
=
"Center"
Width
=
"100"
SelectedValueMemberPath
=
"ID_Plant"
EditTriggers
=
"CellClick"
IsComboBoxEditable
=
"False"
DisplayMemberPath
=
"Text"
ItemsSource
=
"{Binding PlantsForUser}"
>
<
telerik:GridViewComboBoxColumn.ItemTemplate
>
<
DataTemplate
>
<
CheckBox
Content
=
"{Binding Text}"
IsChecked
=
"{Binding IsSelected}"
/>
</
DataTemplate
>
</
telerik:GridViewComboBoxColumn.ItemTemplate
>
</
telerik:GridViewComboBoxColumn
>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
My VB classes (ItemsSource for the combo and ItemsSource for the GridView) :
Public
Class
CustomPlant
#Region "Properties"
Private
_id
As
Long
Public
Property
ID_Plant()
As
Long
Get
Return
Me
._id
End
Get
Set
(value
As
Long
)
Me
._id = value
End
Set
End
Property
Private
_text
As
String
Public
Property
Text()
As
String
Get
Return
_text
End
Get
Set
(
ByVal
value
As
String
)
_text = value
End
Set
End
Property
Private
_isSelected
As
Boolean
Public
Property
IsSelected()
As
Boolean
Get
Return
Me
._isSelected
End
Get
Set
(value
As
Boolean
)
Me
._isSelected = value
End
Set
End
Property
#End Region
Public
Sub
New
(
ByVal
p_plantFrom
As
Plant)
Me
.ID_Plant = p_plantFrom.ID
Me
.Text =
String
.Format(
"{0} - {1}"
, p_plantFrom.Code, p_plantFrom.Name)
Me
.IsSelected =
True
' p_isSelected
End
Sub
End
Class
Public
Class
CustomMessage
Private
_message
As
MessageSchedule
Public
Property
Message
As
MessageSchedule
Get
Return
_message
End
Get
Set
(value
As
MessageSchedule)
_message = value
End
Set
End
Property
Private
_customPlantsDiffusion
As
ObservableCollection(Of CustomPlant)
Public
Property
CustomPlantsDiffusion
As
ObservableCollection(Of CustomPlant)
Get
Return
_customPlantsDiffusion
End
Get
Set
(value
As
ObservableCollection(Of CustomPlant))
_customPlantsDiffusion = value
End
Set
End
Property
'Private _selectedPlants As String
'Public ReadOnly Property SelectedPlantsAsText As String
' Get
' _selectedPlants = String.Empty
' For Each p As CustomPlant In Me.CustomPlantsDiffusion
' If p.IsSelected Then
' _selectedPlants += String.Format("{0};", p.Text)
' End If
' Next
' If _selectedPlants.Length > 2 Then
' _selectedPlants = _selectedPlants.Substring(0, (_selectedPlants.Length - 2)) 'Remove the last ';'
' End If
' Return _selectedPlants
' End Get
' 'Set(value As String)
' ' _selectedPlants = value
' 'End Set
'End Property
Public
Sub
New
(
ByVal
p_messageFrom
As
MessageSchedule,
ByVal
p_attachedPlants
As
ObservableCollection(Of CustomPlant))
Me
.Message = p_messageFrom
Me
.CustomPlantsDiffusion = p_attachedPlants
End
Sub
End
Class
The ItemsSource in my ViewModel :
Private
_customMessagesScheduled
As
New
ObservableCollection(Of CustomMessage)
Public
Property
CustomMessagesScheduled()
As
ObservableCollection(Of CustomMessage)
Get
Return
_customMessagesScheduled
End
Get
Set
(
ByVal
value
As
ObservableCollection(Of CustomMessage))
_customMessagesScheduled = value
OnPropertyChanged(
"CustomMessagesScheduled"
)
End
Set
End
Property
The problems are :
- I want to add a "Select all" item to select or unselect all items, but I don't know how I can do it.
- I'm not sure that the binding is correct
- I want to display the selected items in the grid view cell corresponding, e.g. : Plant_1;Plant2;Plant3 if I have 3 plants selected. If all items are selected, it will be displayed "All". I can't do it with my SelectedPlantsAsText
- After I have added this colum, the "Row to add new item" doesn't works... And I don't know why.
- The good boxes should be selected depanding on CustomPlantsDiffusion by CustomMessage.
I hope you can help me, it's urgent !
Thank you very much.