To reproduce:
- Bind the grid to a list of the following objects:
public class Test
{
private Status _Status = Status.Value1;
public Status Status
{
get { return _Status; }
set { _Status = value; }
}
private string _Name = "";
public string Name
{
get { return _Name; }
set { _Name = value; }
}
}
public enum Status
{
Value1,
Value2,
Value3
}
- Group Name column.
- Open at least one group.
- Close grouping.
- Group status column.
- Try to open status group.
Workaround:
GridViewComboBoxColumn col = radGridView1.Columns[0] as GridViewComboBoxColumn;
col.DisplayMemberSort = true;
Workaround: subscribe to the PageChanged event and update the scroll range.
private void RadGridView1_PageChanged(object sender, EventArgs e)
{
this.RadGridView1.TableElement.RowScroller.UpdateScrollRange();
}
To reproduce: use the following code snippet and try to delete a child row:
public Form1()
{
InitializeComponent();
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("ParentId", typeof(int));
dt.Columns.Add("Name", typeof(string));
for (int i = 0; i < 5; i++)
{
dt.Rows.Add(i, null, "Item" + i);
}
Random rand = new Random();
for (int i = 5; i < 30; i++)
{
dt.Rows.Add(i, rand.Next(0, 5), "Child item" + i);
}
this.radGridView1.Relations.AddSelfReference(this.radGridView1.MasterTemplate, "Id", "ParentId");
this.radGridView1.DataSource = dt;
this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
this.radGridView1.UserDeletingRow += radGridView1_UserDeletingRow;
}
private void radGridView1_UserDeletingRow(object sender, Telerik.WinControls.UI.GridViewRowCancelEventArgs e)
{
if (this.radGridView1.CurrentRow.HasChildRows())
{
DialogResult dialogResult = MessageBox.Show("Are you sure you want to delete this row?",
"Delete Row confirmation", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.No)
{
e.Cancel = true;
}
}
}
Workaround: use the RadGridView.CurrentRow.ChildRows.Count property.
To reproduce: - Set the row height to 1000. - Call the grid PrintPreview method. As workaround one can set the MaxHeight of the rows prior printing.
To reproduce: use the following code snippet and follow the steps from the attached gif file.
public Form1()
{
InitializeComponent();
List<Item> items = new List<Item>();
for (int i = 1; i < 10; i++)
{
items.Add(new Item(i, 0, "Item" + i));
}
Random rand = new Random();
for (int i = 10; i < 50; i++)
{
items.Add(new Item(i, rand.Next(1, 10), "Item" + i));
}
this.radGridView1.Relations.AddSelfReference(this.radGridView1.MasterTemplate, "Id", "ParentId");
this.radGridView1.DataSource = items;
this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
this.radGridView1.EnableFiltering = true;
this.radGridView1.ShowHeaderCellButtons = true;
}
public class Item
{
public int Id { get; set; }
public int ParentId { get; set; }
public string Name { get; set; }
public Item(int id, int parentId, string name)
{
this.Id = id;
this.ParentId = parentId;
this.Name = name;
}
}
Workaround: use the basic filtering
To reproduce:
- Add a ColumnGroupsViewDefinition
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
VisualStudio2012LightTheme theme = new VisualStudio2012LightTheme();
Telerik.WinControls.ThemeResolutionService.ApplicationThemeName = theme.ThemeName;
this.radGridView1.BestFitColumns();
}
Workaround:
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
this.radGridView1.BestFitColumns();
VisualStudio2012LightTheme theme = new VisualStudio2012LightTheme();
Telerik.WinControls.ThemeResolutionService.ApplicationThemeName = theme.ThemeName;
}
Workaround: custom RadGridViewDragDropService and an override of the HandleMouseMove method, please check the attached project
To reproduce:
void radGridView1_CellValueChanged(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
{
if (e.Value == null || e.Value == DBNull.Value)
{
e.Row.Delete();
}
}
- Use the enter key to confirm the change
Workaround:
void radGridView1_CellEndEdit(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
{
if (e.Value == null || e.Value == DBNull.Value)
{
e.Row.Delete();
}
}
Please refer to the attached sample project and follow the steps illustrated on the attached gif file.
Workaround: subscribe to the CellBeginEdit event and focus the grid:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
this.radGridView1.CellBeginEdit += radGridView1_CellBeginEdit;
}
private void radGridView1_CellBeginEdit(object sender, GridViewCellCancelEventArgs e)
{
this.radGridView1.Focus();
}
}
To reproduce: - Create a new Visual Studio project with a single form. - Add a RadGridView control to the form. - Add a child Template to the RadGridView. - In the properties of this child template, enable AutoExpand Groups. - Close the form editor and re-open.
How to reproduce:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.radGridView1.DataSource = this.GetData();
this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
this.radGridView1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
foreach (var col in this.radGridView1.Columns)
{
col.HeaderTextAlignment = ContentAlignment.MiddleLeft;
}
}
private DataTable GetData()
{
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Date", typeof(DateTime));
dt.Columns.Add("Bool", typeof(bool));
dt.Columns.Add("Bool1", typeof(bool));
dt.Columns.Add("Bool2", typeof(bool));
for (int i = 0; i < 50; i++)
{
dt.Rows.Add("Name " + i, DateTime.Now.AddMinutes(i), i % 2 == 0 ? true : false, false, false);
}
return dt;
}
private void radButton1_Click(object sender, EventArgs e)
{
this.radGridView1.PrintPreview();
}
}
Workaround:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.radGridView1.DataSource = this.GetData();
this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
this.radGridView1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
this.radGridView1.PrintCellFormatting += radGridView1_PrintCellFormatting;
foreach (var col in this.radGridView1.Columns)
{
col.HeaderTextAlignment = ContentAlignment.MiddleLeft;
}
}
private void radGridView1_PrintCellFormatting(object sender, PrintCellFormattingEventArgs e)
{
if (e.Row is GridViewTableHeaderRowInfo && this.radGridView1.RightToLeft == System.Windows.Forms.RightToLeft.Yes)
{
e.PrintCell.TextAlignment = ContentAlignment.MiddleRight;
}
}
private DataTable GetData()
{
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Date", typeof(DateTime));
dt.Columns.Add("Bool", typeof(bool));
dt.Columns.Add("Bool1", typeof(bool));
dt.Columns.Add("Bool2", typeof(bool));
for (int i = 0; i < 50; i++)
{
dt.Rows.Add("Name " + i, DateTime.Now.AddMinutes(i), i % 2 == 0 ? true : false, false, false);
}
return dt;
}
private void radButton1_Click(object sender, EventArgs e)
{
this.radGridView1.PrintPreview();
}
}
To reproduce:
- Add a grid to a split panel.
- Edit a cell and resize the panel without ending the edit.
- Click back in the same cell.
Workaround:
private void RadGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
{
BaseGridEditor editor = e.ActiveEditor as BaseGridEditor;
var element = editor.EditorElement as RadTextBoxEditorElement;
if (element != null)
{
element.TextBoxItem.HostedControl.LostFocus -= HostedControl_LostFocus;
element.TextBoxItem.HostedControl.LostFocus += HostedControl_LostFocus;
}
}
private void HostedControl_LostFocus(object sender, EventArgs e)
{
this.RadGridView1.EndEdit();
}
Workaround: Inherit the GridViewSearchRowInfo and override the SelectNextSearchResult method
class MyGridViewSearchRowInfo : GridViewSearchRowInfo
{
private GridViewInfo gridViewInfo;
private RadGridView radGridView;
public MyGridViewSearchRowInfo(GridViewInfo gridViewInfo, RadGridView radGridView)
: base(gridViewInfo)
{
this.radGridView = radGridView;
}
public override Type RowElementType {
get { return typeof(GridSearchRowElement); }
}
public override void SelectNextSearchResult()
{
if (this.radGridView != null) {
this.radGridView.ElementTree.Control.Invoke(() => { base.SelectNextSearchResult(); });
}
}
}
To reproduce: - Add textbox and checkbox columns to a grid the checkbox column should not be visible without scrolling to the right. - Change the data source in the FilterChanged event. - Test this by moving the checkbox column in front of the text box column.
To reproduce:
1. Add a UserControl and drop a RadGridView in it.
2. Use the following code:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
ColumnGroupsViewDefinition view = new ColumnGroupsViewDefinition();
this.radGridView1.ViewDefinition = view;
view.ColumnGroups.Add(new GridViewColumnGroup("Group"));
view.ColumnGroups[0].Rows.Add(new GridViewColumnGroupRow() );
GridViewTextBoxColumn col = new GridViewTextBoxColumn("Col1");
this.radGridView1.Columns.Add(col);
view.ColumnGroups[0].Rows[0].ColumnNames.Add("Col1");
}
}
3. Drag the UserControl from the Toolbox to the form.
Workaround: set the ViewDefinition property after all columns are added.
Workaround: check the attached project
To reproduce: - Assing context menu using one of the default properties.
Introduce a property to change symbol used to separate summaryItems in SummaryRowGroupHeaders.
To reproduce:
GridViewHyperlinkColumn col = new GridViewHyperlinkColumn();
col.FieldName = "Name";
col.HyperlinkOpenAction = HyperlinkOpenAction.DoubleClick;
Workaround:
Use the CellDoubleClick event:
void radGridView1_CellDoubleClick(object sender, GridViewCellEventArgs e)
{
if (e.Column is GridViewHyperlinkColumn)
{
string hyperlink = e.Value.ToString();
}
}