To reproduce, add a grid with GridViewHyperlinkColumn and enough rows for vertical scrolling. Click a link in a cell so its link will change to visited (its color changes). Scroll down and you will see how the same visited state is transferred to other cells.
To reproduce - bind the grid to a binding list - pin one of the rows - delete this row from the binding list - click somewhere on the grid => exception is thrown
To reproduce: rgvTest.BeginUpdate() For ixTest As Integer = 1 To 2000 Dim rgvrTest As GridViewRowInfo = rgvTest.Rows.AddNew rgvrTest.Cells(0).Value = "Value " & ixTest.ToString Next rgvTest.EndUpdate() rgvTest.Rows(0).IsCurrent = True MessageBox.Show(rgvTest.CurrentCell.RowIndex.ToString)
FIX. RadGridView - add property to GridSpinEditorElement which will prevent the value changing with mouse wheel
IMPROVE. RadGridView - In hierarchy the excel-like filtering on child levels to show values only from the rows of the expanded row instead of all rows of the template.
ADD. RadTimePicker localization provider
Workaround, use the Pasting event of RadGridView and perform the needed validation
The check box should be placed in the header cell (if the users wants to). Additionally it should be able to control both one level and hierarchy Resolution: You need to set the EnableHeaderCheckBox property to true. Please refer in help article for more information: http://www.telerik.com/help/winforms/gridview-columns-gridviewcheckboxcolumn.html
Steps to reproduce: 1. Add a RadGridView to a form. 2. Add a code that would load data in the RadGridView from an IDataReader: radGridView1.MasterTemplate.LoadFrom(iReader); 3. Set EnableAlternatingRowColor to true and set some AlternatingRowColor 4. Run the project and you will see that the alternating row color is not applied.
Steps to reproduce: 1. Add a RadGridView to form 2. Add a hyperlink column and set its width to say 100. 3. Add a row in the column with a text measuring than 100 in width. 4. Run the project and you will see that the text will be cropped without "..." in its end.
To reproduce: -add a RadGridView and bind it to Northwind.Customers datatable. -try to edit a random row and change its CustomerID cell to an already existing one. Workaround: use custom GridViewDataRowInfo: public class CustomRowInfo : GridViewDataRowInfo { public CustomRowInfo(GridViewInfo viewInfo) : base(viewInfo) { } protected override bool OnEndEdit() { IEditableObject dataItem = this.DataBoundItem as IEditableObject; if (dataItem != null) { try { dataItem.EndEdit(); } catch (Exception ex) { this.ViewTemplate.SetError(new GridViewCellCancelEventArgs(null,null, null), ex); } } return base.OnEndEdit(); } }
Workaround: use the CellValidating event
To reproduce: - Add a grid with some columns to a blank form (the rows should not fill the entire space). - Press and hold the left mouse button, the move the mouse to the empty area of the grid. - Continue to move the mouse and you will notice the event is fired several times. Workaround: - use the CurrentCellChanged event.
When scrolling to the bottom of the grid with the mouse, the last row is not lined up with the bottom of the grid. Also, when doing this, clicking on any row, leads to row jumping down to align properly, but a different row is selected. Workaround: public Form1() { InitializeComponent(); radGridView1.MouseDown+=radGridView1_MouseDown; radGridView1.MouseUp+=radGridView1_MouseUp; } bool scrolling = false; private void radGridView1_MouseDown(object sender, MouseEventArgs e) { ScrollBarThumb thumb = radGridView1.ElementTree.GetElementAtPoint(e.Location) as ScrollBarThumb; if (thumb != null) { scrolling = true; } } private void radGridView1_MouseUp(object sender, MouseEventArgs e) { if (scrolling) { scrolling = false; int scrollBarValue = radGridView1.TableElement.VScrollBar.Value; radGridView1.MasterTemplate.Refresh(); radGridView1.TableElement.VScrollBar.Value = scrollBarValue; } }
To reproduce: - Add grid to a form and populate it with data. - Show and hide the the excel like filtering several times.
To reproduce: private void Form1_Load(object sender, EventArgs e) { this.customersTableAdapter.Fill(this.nwindDataSet.Customers); GridViewMultiComboBoxColumn col = new GridViewMultiComboBoxColumn("MCCB column"); col.DataSource = this.customersBindingSource; col.DisplayMember = "ContactName"; col.ValueMember = "CustomerID"; this.radGridView1.Columns.Add(col); this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; } private void radGridView1_UserAddingRow(object sender, Telerik.WinControls.UI.GridViewRowCancelEventArgs e) { if (e.Rows.First().Cells[0].Value+"" =="ALFKI") { MessageBox.Show("Please select a product", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); e.Cancel = true; this.radGridView1.BeginEdit(); } } Please refer to the attached gif file. Workaround: use the NumericUpDown.MouseDown event and call the RadGridView.BeginEdit method instead of activating the editor in the UserAddingRow event.
To reproduce: - Set the column like this: GridViewMaskBoxColumn col = new GridViewMaskBoxColumn(); col.Mask = "&&&&&&&&&&"; col.MaskType = MaskType.Standard; col.FieldName = "Name"; col.TextMaskFormat = MaskFormat.IncludeLiterals; - Type two words and press enter. Workaround: public class MyRadMaskedEditBoxEditor : RadMaskedEditBoxEditor { public override object Value { get { if (this.MaskTextBox.Mask == "my mask") { return this.MaskTextBox.Value; } return base.Value; } set { base.Value = value; } } }
http://screencast.com/t/mZDwbWS8 WORKAROUND: Set the UseCompatibleTextRendering property of RadGridView to false.
To reproduce: use the following code snippet and have a look at the attached gif file. Steps: 1.Populate RadGridView with data and enable Excel-like filtering. 2.Click on a column filter icon and type in the Search textbox so more than two results appear. Then, click OK 2.The grid returns correct result. 3. Click on the previous column filter icon and navigate to Available Filters -> Contains 4. Evaluate the initial pop up dialog. You will notice that the 3rd filter descriptor is not displayed in the form. 5. Then, click OK 6. A message that says: "The composite filter descriptor is not valid". 7. Change the latter condition to "No filter" and click OK 8. The grid returns correct result. CompositeFilterForm should be improved on a way to display all applied filters,not only two of them. public Form1() { InitializeComponent(); DataTable dt = new DataTable(); dt.Columns.Add("Group", typeof(string)); dt.Columns.Add("Description", typeof(string)); for (int i = 0; i < 20; i++) { dt.Rows.Add(GenerateWord(3), "Description"); } this.radGridView1.DataSource = dt; this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill; this.radGridView1.EnableFiltering = true; this.radGridView1.ShowHeaderCellButtons = true; this.radGridView1.ShowFilteringRow = false; this.radGridView1.CreateCompositeFilterDialog += radGridView1_CreateCompositeFilterDialog; } string word = null; int cons; int vow; //counter int i = 0; bool isword = false; Random rand = new Random(); //set a new string array of consonants string[] consonant = new string[] { "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z" }; //set a new string array of vowels string[] vowel = new string[] { "a", "e", "i", "o", "u" }; string GenerateWord(int length) { if (length < 1) // do not allow words of zero length throw new ArgumentException("Length must be greater than 0"); string word = string.Empty; if (rand.Next() % 2 == 0) // randomly choose a vowel or consonant to start the word word += consonant[rand.Next(0, 20)]; else word += vowel[rand.Next(0, 4)]; for (int i = 1; i < length; i += 2) // the counter starts at 1 to account for the initial letter { // and increments by two since we append two characters per pass string c = consonant[rand.Next(0, 20)]; string v = vowel[rand.Next(0, 4)]; if (c == "q") // append qu if the random consonant is a q word += "qu"; else // otherwise just append a random consant and vowel word += c + v; } // the word may be short a letter because of the way the for loop above is constructed if (word.Length < length) // we'll just append a random consonant if that's the case word += consonant[rand.Next(0, 20)]; return word; } Workaround: By using the CreateCompositeFilterDialog event you can replace the default CompositeFilterForm with your custom one where you can load all available filter descriptors.