Hi, in my program I have a RadGridView. Some of the cells are formatted with different backgroundcolor or they are disabled. The first time I bind the grid with data read from a table of a database it shows correct but If I update the grid it loses the format (All the cells are white and enabled) .
The cells are formatted according to this approach http://www.telerik.com/community/forums/winforms/gridview/createcell-event-cellelement-is-always-null.aspx (First it sets a tag for each cell in DataBindingComplete and subsequently depending on this value it sets backcolor and enabled properties for the cell.)
Here is the code (Cheers to Emanuel Varga for it):
Thanks for the answers.
The cells are formatted according to this approach http://www.telerik.com/community/forums/winforms/gridview/createcell-event-cellelement-is-always-null.aspx (First it sets a tag for each cell in DataBindingComplete and subsequently depending on this value it sets backcolor and enabled properties for the cell.)
Here is the code (Cheers to Emanuel Varga for it):
void radGridView1_CellFormatting(object sender, CellFormattingEventArgs e) { if (e.CellElement.RowInfo.Cells[0].Tag != null && e.CellElement.RowInfo.Cells[0].Tag.Equals(true)) { e.CellElement.BackColor = Color.Red; e.CellElement.DrawFill = true; } else { e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); } } void radGridView1_DataBindingComplete(object sender, GridViewBindingCompleteEventArgs e) { foreach (var row in radGridView1.Rows) { if (row.Index % 2 == 0) { row.Cells[0].Tag = true; } } } Thanks for the answers.
6 Answers, 1 is accepted
0
Richard Slade
Top achievements
Rank 2
answered on 18 Nov 2010, 04:58 PM
Hello LLC,
i think this may be the same as a bug I have just reported.
Can you just try calling
as the first thing you do in your CellFormatting event please, and then perform the rest as you are doing there and let me know the result.
Thanks
Richard
i think this may be the same as a bug I have just reported.
Can you just try calling
e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);Thanks
Richard
0
LLC
Top achievements
Rank 1
answered on 18 Nov 2010, 05:33 PM
Hi, Richard. Unluckily it doesn't work :(
0
Richard Slade
Top achievements
Rank 2
answered on 18 Nov 2010, 05:43 PM
Sorry to hear that. If you breakpoint on
e.CellElement.BackColor is it ever reaching that code?
Richard0
Accepted
Richard Slade
Top achievements
Rank 2
answered on 18 Nov 2010, 10:30 PM
Hello LLC,
Apologies this is in VB for now, but I've tried binding to a simple datasource, with a button on the form that re-binds to a new datasource, using your CellFormatting code and your DataBindingComplete method and I couldn't replicate your issue.
Please can you try it also and let me know if it runs ok on yours?
Let me know if I can help further
Richard
Apologies this is in VB for now, but I've tried binding to a simple datasource, with a button on the form that re-binds to a new datasource, using your CellFormatting code and your DataBindingComplete method and I couldn't replicate your issue.
Please can you try it also and let me know if it runs ok on yours?
Imports Telerik.WinControls Imports Telerik.WinControls.UI Imports System.Globalization Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim list As New List(Of person) list.Add(New person("Richard", 1)) list.Add(New person("Bob", 2)) list.Add(New person("Stewart", 3)) list.Add(New person("Chris", 4)) list.Add(New person("Leisl", 1)) list.Add(New person("Tom", 5)) list.Add(New person("Oly", 6)) Me.RadGridView1.DataSource = list End Sub Private Sub RadButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadButton1.Click Dim list As New List(Of person) list.Add(New person("Ian", 1)) list.Add(New person("Bert", 2)) list.Add(New person("Brian", 3)) list.Add(New person("Ethel", 4)) list.Add(New person("Mabel", 1)) list.Add(New person("Gertrude", 5)) list.Add(New person("Molly", 6)) Me.RadGridView1.DataSource = list End Sub Private Sub RadGridView1_CellFormatting(ByVal sender As System.Object, _ ByVal e As Telerik.WinControls.UI.CellFormattingEventArgs) Handles RadGridView1.CellFormatting If e.CellElement.RowInfo.Cells(0).Tag IsNot Nothing AndAlso e.CellElement.RowInfo.Cells(0).Tag.Equals(True) Then e.CellElement.BackColor = Color.Red e.CellElement.DrawFill = True Else e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local) e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local) End If End Sub Private Sub RadGridView1_DataBindingComplete(ByVal sender As System.Object, ByVal e As Telerik.WinControls.UI.GridViewBindingCompleteEventArgs) Handles RadGridView1.DataBindingComplete For Each row As GridViewRowInfo In RadGridView1.Rows If row.Index Mod 2 = 0 Then row.Cells(0).Tag = True End If Next End Sub End Class Public Class person Private m_Id As Integer Private m_Name As String Public Sub New() End Sub Public Sub New(ByVal name As String, ByVal id As Integer) m_Name = name m_Id = id End Sub Public Property Name() As String Get Return m_Name End Get Set(ByVal value As String) m_Name = value End Set End Property Public Property Id() As Integer Get Return m_Id End Get Set(ByVal value As Integer) m_Id = value End Set End PropertyEnd ClassLet me know if I can help further
Richard
0
LLC
Top achievements
Rank 1
answered on 19 Nov 2010, 10:16 AM
Hi, Richard. Don't worry about if the code is VB or C#. I've tested your sample code and it works (maybe due to the data are in a list?) but in my case it keeps failing (My data come from a datatable , the database is SQL SERVER 2005). The difference between your code and mine one is that after updating the table I wasn't setting datasource property of the grid to the table; I've set it but it fails too). For the moment to sort it out I set datasource property of RadGridView to nothing and then I set it to the table which contains the data again. This way the cells are well formatted.
Thanks for your effort and assistance.
Thanks for your effort and assistance.
0
Richard Slade
Top achievements
Rank 2
answered on 19 Nov 2010, 10:19 AM
Hi LLC,
I'm glad you solved your issue. If you feel any of the suggestions helped, please mark as answer. And if there's anything else you need just let me know.
Richard
I'm glad you solved your issue. If you feel any of the suggestions helped, please mark as answer. And if there's anything else you need just let me know.
Richard