9 Answers, 1 is accepted

One way to do this is to use the CellFormatting event. Please see this hep topic for more information
If you need further help, please let me know
Thanks
Richard

Thanks a lot Richard
Can’t we use a picture instead of changing color??

The CellFormatting event is the way to go if you want to add an image to the cell, please refer to the following example:
using
System.Collections.Generic;
using
System.Drawing;
using
System.Windows.Forms;
using
Telerik.WinControls.UI;
public
partial
class
Form1 : Form
{
private
RadGridView radGridView1;
private
List<CustomGridSource> list;
public
Form1()
{
InitializeComponent();
this
.Size =
new
Size(800, 600);
this
.Controls.Add(radGridView1 =
new
RadGridView());
radGridView1.Dock = DockStyle.Fill;
radGridView1.CellFormatting +=
new
CellFormattingEventHandler(radGridView1_CellFormatting);
radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
var list =
new
List<CustomGridSource>();
for
(
int
i = 0; i < 100; i++)
{
list.Add(
new
CustomGridSource { Id = i, Name =
"Name"
+ i, DataType = (i % 3 == 0) ? DataTypeEnum.Data3 : ((i % 2 == 0) ? DataTypeEnum.Data2 : DataTypeEnum.Data1) });
}
radGridView1.DataSource = list;
}
void
radGridView1_CellFormatting(
object
sender, CellFormattingEventArgs e)
{
if
(e.Column.FieldName ==
"DataType"
)
{
e.CellElement.DrawText =
false
;
e.CellElement.Image = GetImageForType(e.CellElement.Value);
}
else
{
e.CellElement.ResetValue(LightVisualElement.DrawTextProperty, Telerik.WinControls.ValueResetFlags.Local);
e.CellElement.ResetValue(LightVisualElement.DrawTextProperty, Telerik.WinControls.ValueResetFlags.Local);
}
}
private
Image GetImageForType(
object
p)
{
Image img =
null
;
if
(p
is
DataTypeEnum)
{
var dataType = (DataTypeEnum)p;
switch
(dataType)
{
case
DataTypeEnum.Data1:
img = Properties.Resources.image1;
break
;
case
DataTypeEnum.Data2:
img = Properties.Resources.image2;
break
;
case
DataTypeEnum.Data3:
img = Properties.Resources.image3;
break
;
default
:
break
;
}
}
return
img;
}
}
public
class
CustomGridSource
{
public
int
Id {
get
;
set
; }
public
string
Name {
get
;
set
; }
public
DataTypeEnum DataType {
get
;
set
; }
}
public
enum
DataTypeEnum
{
Data1,
Data2,
Data3
}
Hope this helps, if you have any other questions or comments, please let me know,
Best Regards,
Emanuel Varga
Telerik WinForms MVP

Thanks Emanuel
but iam getting this error
RadGridView1.CellFormatting =
New CellFormattingEventHandler(AddressOf radGridView1_CellFormatting)
Error 1 'Public Event CellFormatting(sender As Object, e As Telerik.WinControls.UI.CellFormattingEventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.
Key
.Id = i, _
Error 2 Name of field or property being initialized in an object initializer must start with '.'.
Properties.Resources.image1
Error 4 'Telerik.WinControls.UI.Properties.Resources' is not accessible in this context because it is 'Friend'.
do you have any idea ??
thanks a lot
anoop

Are you using vb.net? If so, the conversion would be as follows
AddHandler
RadGridView1.CellFormatting,
AddressOf
RadGridView1_CellFormatting
Hope that helps
Richard

yeah i converted to VB
However still not working well with me
this is it after the conversion
Imports System.Collections.Generic
Imports System.Drawing
Imports System.Windows.Forms
Imports Telerik.WinControls.UI
Partial Public Class Form1
Inherits Form
Private list As List(Of CustomGridSource)
AddHandler RadGridView1.CellFormatting, AddressOf RadGridView1_CellFormatting
Public Sub New()
InitializeComponent()
Me.Size = New Size(800, 600)
Me.Controls.Add(InlineAssignHelper(radGridView1, New RadGridView()))
radGridView1.Dock = DockStyle.Fill
RadGridView1.CellFormatting = New CellFormattingEventHandler(AddressOf radGridView1_CellFormatting)
AddHandler RadGridView1.CellFormatting, AddressOf radGridView1_CellFormatting
RadGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill
Dim list = New List(Of CustomGridSource)()
For i As Integer = 0 To 99
list.Add(New CustomGridSource() With { _
Key .Id = i, _
Key .Name = "Name" & i, _
Key .DataType = If((i Mod 3 = 0), DataTypeEnum.Data3, (If((i Mod 2 = 0), DataTypeEnum.Data2, DataTypeEnum.Data1))) _
})
Next
radGridView1.DataSource = list
End Sub
Private Sub radGridView1_CellFormatting(ByVal sender As Object, ByVal e As CellFormattingEventArgs)
If e.Column.FieldName = "DataType" Then
e.CellElement.DrawText = False
e.CellElement.Image = GetImageForType(e.CellElement.Value)
Else
e.CellElement.ResetValue(LightVisualElement.DrawTextProperty, Telerik.WinControls.ValueResetFlags.Local)
e.CellElement.ResetValue(LightVisualElement.DrawTextProperty, Telerik.WinControls.ValueResetFlags.Local)
End If
End Sub
Private Function GetImageForType(ByVal p As Object) As Image
Dim img As Image = Nothing
AddHandler RadGridView1.CellFormatting, AddressOf RadGridView1_CellFormatting
If TypeOf p Is DataTypeEnum Then
Dim dataType = CType(p, DataTypeEnum)
Select Case dataType
Case DataTypeEnum.Data1
img = Properties.Resources.image1
Exit Select
Case DataTypeEnum.Data2
img = Properties.Resources.image2
Exit Select
Case DataTypeEnum.Data3
img = Properties.Resources.image3
Exit Select
Case Else
Exit Select
End Select
End If
Return img
End Function
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
target = value
Return value
End Function
Private Sub RadGridView1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadGridView1.Click
End Sub
End Class
Public Class CustomGridSource
Public Property Id() As Integer
Get
Return m_Id
End Get
Set(ByVal value As Integer)
m_Id = Value
End Set
End Property
Private m_Id As Integer
Public Property Name() As String
Get
Return m_Name
End Get
Set(ByVal value As String)
m_Name = Value
End Set
End Property
Private m_Name As String
Public Property DataType() As DataTypeEnum
Get
Return m_DataType
End Get
Set(ByVal value As DataTypeEnum)
m_DataType = Value
End Set
End Property
Private m_DataType As DataTypeEnum
End Class
Public Enum DataTypeEnum
Data1
Data2
Data3
End Enum

Please take a look at this vb revised version:
Imports
System.Collections.Generic
Imports
System.Drawing
Imports
System.Windows.Forms
Imports
Telerik.WinControls.UI
Partial
Public
Class
Form1
Inherits
Form
Private
list
As
List(Of CustomGridSource)
Public
Sub
New
()
InitializeComponent()
Me
.Size =
New
Size(800, 600)
AddHandler
RadGridView1.CellFormatting,
AddressOf
radGridView1_CellFormatting
RadGridView1.Dock = DockStyle.Fill
AddHandler
RadGridView1.CellFormatting,
AddressOf
radGridView1_CellFormatting
RadGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill
Dim
list =
New
List(Of CustomGridSource)()
For
i
As
Integer
= 0
To
99
list.Add(
New
CustomGridSource()
With
{ _
.Id = i, _
.Name =
"Name"
& i, _
.DataType =
If
((i
Mod
3 = 0), DataTypeEnum.Data3, (
If
((i
Mod
2 = 0), DataTypeEnum.Data2, DataTypeEnum.Data1))) _
})
Next
radGridView1.DataSource = list
End
Sub
Private
Sub
radGridView1_CellFormatting(
ByVal
sender
As
Object
,
ByVal
e
As
CellFormattingEventArgs)
If
e.Column.FieldName =
"DataType"
Then
e.CellElement.DrawText =
False
e.CellElement.Image = GetImageForType(e.CellElement.Value)
Else
e.CellElement.ResetValue(LightVisualElement.DrawTextProperty, Telerik.WinControls.ValueResetFlags.Local)
e.CellElement.ResetValue(LightVisualElement.DrawTextProperty, Telerik.WinControls.ValueResetFlags.Local)
End
If
End
Sub
Private
Function
GetImageForType(
ByVal
p
As
Object
)
As
Image
Dim
img
As
Image =
Nothing
If
(p
Is
Nothing
)
Then
Return
img
End
If
If
TypeOf
p
Is
DataTypeEnum
Then
Dim
dataType =
CType
(p, DataTypeEnum)
Select
Case
dataType
Case
DataTypeEnum.Data1
img = My.Resources.Resource1.image1
Exit
Select
Case
DataTypeEnum.Data2
img = My.Resources.Resource1.image2
Exit
Select
Case
DataTypeEnum.Data3
img = My.Resources.Resource1.image3
Exit
Select
Case
Else
Exit
Select
End
Select
End
If
Return
img
End
Function
End
Class
Public
Class
CustomGridSource
Public
Property
Id()
As
Integer
Get
Return
m_Id
End
Get
Set
(
ByVal
value
As
Integer
)
m_Id = Value
End
Set
End
Property
Private
m_Id
As
Integer
Public
Property
Name()
As
String
Get
Return
m_Name
End
Get
Set
(
ByVal
value
As
String
)
m_Name = Value
End
Set
End
Property
Private
m_Name
As
String
Public
Property
DataType()
As
DataTypeEnum
Get
Return
m_DataType
End
Get
Set
(
ByVal
value
As
DataTypeEnum)
m_DataType = Value
End
Set
End
Property
Private
m_DataType
As
DataTypeEnum
End
Class
Public
Enum
DataTypeEnum
Data1
Data2
Data3
End
Enum
BTW: This assumes that you have added the grid from the designer, in the C# version you did not have to add a grid, from what i saw in this code this is the path you decided to move on.
Hope this helps, if you have any other questions or comments, please let me know,
Best Regards,
Emanuel Varga
Telerik WinForms MVP

Hi
am getting this[Error 1 'Resource1' is not a member of 'Resources'] error
with this line
img = My.Resources.Resource1.image1

Thanks Richard
its working now