I'm using tags to selectively format cells and using automatic layout saving/loading. When a layout is loaded, cell tags are lost. Example code below. I feel like the cell tag should remain intact and this is a bug? I tried to include a project but only images are allowed on the forum.
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using Telerik.WinControls;using Telerik.WinControls.UI;namespace TestGridViewTagsLayout{ public class Form1 : Form { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { Telerik.WinControls.UI.TableViewDefinition tableViewDefinition3 = new Telerik.WinControls.UI.TableViewDefinition(); this.radGridView1 = new Telerik.WinControls.UI.RadGridView(); this.cmdLoadLayout = new System.Windows.Forms.Button(); this.cmdSaveLayout = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.radGridView1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.radGridView1.MasterTemplate)).BeginInit(); this.SuspendLayout(); // // radGridView1 // this.radGridView1.Location = new System.Drawing.Point(12, 12); // // // this.radGridView1.MasterTemplate.ViewDefinition = tableViewDefinition3; this.radGridView1.Name = "radGridView1"; this.radGridView1.Size = new System.Drawing.Size(776, 394); this.radGridView1.TabIndex = 0; this.radGridView1.CellFormatting += new Telerik.WinControls.UI.CellFormattingEventHandler(this.RadGridView1_CellFormatting); // // cmdLoadLayout // this.cmdLoadLayout.Location = new System.Drawing.Point(12, 415); this.cmdLoadLayout.Name = "cmdLoadLayout"; this.cmdLoadLayout.Size = new System.Drawing.Size(75, 23); this.cmdLoadLayout.TabIndex = 1; this.cmdLoadLayout.Text = "Load Layout"; this.cmdLoadLayout.UseVisualStyleBackColor = true; this.cmdLoadLayout.Click += new System.EventHandler(this.CmdLoadLayout_Click); // // cmdSaveLayout // this.cmdSaveLayout.Location = new System.Drawing.Point(93, 415); this.cmdSaveLayout.Name = "cmdSaveLayout"; this.cmdSaveLayout.Size = new System.Drawing.Size(75, 23); this.cmdSaveLayout.TabIndex = 1; this.cmdSaveLayout.Text = "Save Layout"; this.cmdSaveLayout.UseVisualStyleBackColor = true; this.cmdSaveLayout.Click += new System.EventHandler(this.CmdSaveLayout_Click); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(800, 450); this.Controls.Add(this.cmdSaveLayout); this.Controls.Add(this.cmdLoadLayout); this.Controls.Add(this.radGridView1); this.Name = "Form1"; this.Text = "Form1"; this.Load += new System.EventHandler(this.Form1_Load); ((System.ComponentModel.ISupportInitialize)(this.radGridView1.MasterTemplate)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.radGridView1)).EndInit(); this.ResumeLayout(false); } #endregion private Telerik.WinControls.UI.RadGridView radGridView1; private System.Windows.Forms.Button cmdLoadLayout; private System.Windows.Forms.Button cmdSaveLayout; private string layoutXml = null; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { List<TestEntity> list = new List<TestEntity>(); list.Add(new TestEntity() { a = "1", b = "1", c = "1" }); list.Add(new TestEntity() { a = "1", b = "2", c = "2" }); list.Add(new TestEntity() { a = "3", b = "1", c = "1" }); list.Add(new TestEntity() { a = "1", b = "1", c = "1" }); radGridView1.AutoGenerateColumns = false; GridViewTextBoxColumn textBoxColumn = new GridViewTextBoxColumn(); textBoxColumn.Name = "a"; textBoxColumn.HeaderText = "A"; textBoxColumn.FieldName = "a"; textBoxColumn.AutoSizeMode = BestFitColumnMode.AllCells; radGridView1.MasterTemplate.Columns.Add(textBoxColumn); textBoxColumn = new GridViewTextBoxColumn(); textBoxColumn.Name = "b"; textBoxColumn.HeaderText = "B"; textBoxColumn.FieldName = "b"; textBoxColumn.AutoSizeMode = BestFitColumnMode.AllCells; radGridView1.MasterTemplate.Columns.Add(textBoxColumn); textBoxColumn = new GridViewTextBoxColumn(); textBoxColumn.Name = "c"; textBoxColumn.HeaderText = "C"; textBoxColumn.FieldName = "c"; textBoxColumn.AutoSizeMode = BestFitColumnMode.AllCells; radGridView1.MasterTemplate.Columns.Add(textBoxColumn); radGridView1.DataSource = list; HighlightFieldChanges(); radGridView1.TableElement.Update(GridUINotifyAction.Reset); } private void HighlightFieldChanges() { for (int i = 1; i < radGridView1.RowCount; i++) { GridViewRowInfo prevRow = radGridView1.Rows[i - 1]; GridViewRowInfo curRow = radGridView1.Rows[i]; for (int j = 0; j < prevRow.Cells.Count; j++) { if (!(Convert.ToString(prevRow.Cells[j].Value).Equals(Convert.ToString(curRow.Cells[j].Value)))) { prevRow.Cells[j].Tag = true; } } } } private void RadGridView1_CellFormatting(object sender, Telerik.WinControls.UI.CellFormattingEventArgs e) { if (((e.Row.Cells[e.ColumnIndex].Tag) as bool?).GetValueOrDefault(false) == true) { e.CellElement.DrawFill = true; e.CellElement.BackColor = Color.LightYellow; e.CellElement.NumberOfColors = 1; } else { e.CellElement.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local); e.CellElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local); e.CellElement.ResetValue(LightVisualElement.NumberOfColorsProperty, ValueResetFlags.Local); } } private void CmdSaveLayout_Click(object sender, EventArgs e) { MemoryStream ms = new MemoryStream(); radGridView1.SaveLayout(ms); ms.Flush(); ms.Position = 0; StreamReader sr = new StreamReader(ms); layoutXml = sr.ReadToEnd(); } private void CmdLoadLayout_Click(object sender, EventArgs e) { MemoryStream ms = new MemoryStream(); StreamWriter sw = new StreamWriter(ms); sw.Write(layoutXml); sw.Flush(); ms.Position = 0; radGridView1.LoadLayout(ms); radGridView1.TableElement.Update(GridUINotifyAction.Reset); } } public class TestEntity { public string a { get; set; } public string b { get; set; } public string c { get; set; } }}