Completed
Last Updated: 27 Aug 2019 12:15 by ADMIN
Release R3 2019

 The scroll in the SuggestedActionsElement cannot be made visible, one can scroll only with the mouse. Introduce a property so there is an indication that additional items are available.

In addition, the CreateChatElement in RadChat class should be made virtual. 

Approved
Last Updated: 26 Aug 2019 11:41 by ADMIN
When trying to import a document containing bookmark and BookmarkRangeEnd is after the last paragraph, a StackOverflowException is thrown in IntervalNode while trying to rebuild the document cache. (RadDocumentChildrenCache.RebuildTree()).

The same could be observed if the bookmark end is last in the header/footer, between table cells in the RadDocument body, or when all paragraphs after the bookmark range end are hidden (with vanish property).

Workaround: Detect the problematic annotations and remove them:
foreach (var rangeStart in document.EnumerateChildrenOfType<AnnotationRangeStart>())
{
    if (rangeStart.End == null || rangeStart.End.Parent == null || rangeStart.End.Parent.Parent == null)
    {
        //MessageBox.Show("This indicates a problem.");
        rangeStart.Parent.Children.Remove(rangeStart);
    }
}

Note: Until 2017 R2 SP1 release StackOverflowException is thrown, after this release an ArgumentException should be thrown.
Approved
Last Updated: 23 Aug 2019 05:43 by ADMIN

Hi,

 

I am working with the RadGridView in my c# winform application. I am using the custom font ("Font Awesome 5 Free Solid") for the RadGridView using the "CellFormatting" event to view the icons along with the text. Here i am able to see the proper icons with text but when i open the filter menu to filter out the rows, i am unable to see the icons (icons shown as the box) as in filterbox we don't have any custom font

I tried to working out the properties of the RadTreeNodeCollection but here we dont have any Custom font property for the same. 

i want to show the text as it is in the filterbox along with the text and the icon.

so can you suggest what i can do to view the icons in the filterbox?

Check the attachment for reference.

 

Completed
Last Updated: 22 Aug 2019 13:22 by ADMIN
To reproduce: run the attached project and toggle the checkbox in the header cell of the child template. 

Workaround: use a custom GridCheckBoxHeaderCellElement


    public partial class RadForm1 : Telerik.WinControls.UI.RadForm
    {
        public RadForm1()
        {
            InitializeComponent();

            this.radGridView1.CreateCell += radGridView1_CreateCell;

            DataTable dt = new DataTable();
            dt.Columns.Add("CategoryId", typeof(int));
            dt.Columns.Add("CategoryName", typeof(string));
            dt.Columns.Add("ParentCategoryId", typeof(int));

            dt.Rows.Add(1, "Category1", 0);
            dt.Rows.Add(2, "Category2", 0);
            dt.Rows.Add(3, "Category3", 0);

            Random rand = new Random();
            for (int i = 4; i < 20; i++)
            {
                dt.Rows.Add(i, "Category" + i, rand.Next(1, 4));
            }
            this.radGridView1.Relations.AddSelfReference(this.radGridView1.MasterTemplate, "CategoryId", "ParentCategoryId");
            this.radGridView1.DataSource = dt;
            this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;

            GridViewTemplate childTemplate = CreateChildTemplate();
            GridViewRelation relation = new GridViewRelation(
                this.radGridView1.MasterTemplate,
                childTemplate);
            relation.ChildColumnNames.Add("CategoryId");
            relation.ParentColumnNames.Add("CategoryId");
            this.radGridView1.Relations.Add(relation);
        }

        private void radGridView1_CreateCell(object sender, GridViewCreateCellEventArgs e)
        {
            if (e.CellType == typeof(GridCheckBoxHeaderCellElement))
            {
                e.CellElement = new CustomGridCheckBoxHeaderCellElement(e.Column, e.Row);
            }
        }

        private GridViewTemplate CreateChildTemplate()
        {
            GridViewTemplate childTemplate = new GridViewTemplate();
            childTemplate.AutoGenerateColumns = false;
            this.radGridView1.Templates.Add(childTemplate);

            GridViewDecimalColumn decColumn = new GridViewDecimalColumn
            {
                Name = "CategoryId",
                HeaderText = "CategoryId Id",
                FieldName = "CategoryId",
                IsVisible = false,
                MinWidth = 100
            };
            childTemplate.Columns.Add(decColumn);

            GridViewTextBoxColumn tbxColumn = new GridViewTextBoxColumn
            {
                Name = "RightName",
                HeaderText = "Right Name",
                FieldName = "RGT_NAME",
                ReadOnly = true,
                MinWidth = 100
            };
            childTemplate.Columns.Add(tbxColumn);

            GridViewCheckBoxColumn chkxColumn = new GridViewCheckBoxColumn
            {
                Name = "Checkbox",
                EnableHeaderCheckBox = true,
                FieldName = "HasAccess",
            };
            childTemplate.Columns.Add(chkxColumn);
            childTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
            return childTemplate;
        }

        public class CustomGridCheckBoxHeaderCellElement : GridCheckBoxHeaderCellElement
        {
            public CustomGridCheckBoxHeaderCellElement(GridViewColumn column, GridRowElement row) : base(column, row)
            {
            }

            public bool SuspendProcessingToggleStateChanged
            {
                get
                {
                    FieldInfo fi = typeof(GridCheckBoxHeaderCellElement).GetField("suspendProcessingToggleStateChanged", BindingFlags.NonPublic | BindingFlags.Instance);
                    return (bool)fi.GetValue(this);
                }
                set
                {
                    FieldInfo fi = typeof(GridCheckBoxHeaderCellElement).GetField("suspendProcessingToggleStateChanged", BindingFlags.NonPublic | BindingFlags.Instance);
                    fi.SetValue(this, value);
                }
            }

            public bool ShouldCheckDataRows
            {
                get
                {
                    FieldInfo fi = typeof(GridCheckBoxHeaderCellElement).GetField("shouldCheckDataRows", BindingFlags.NonPublic | BindingFlags.Instance);
                    return (bool)fi.GetValue(this);
                }
                set
                {
                    FieldInfo fi = typeof(GridCheckBoxHeaderCellElement).GetField("shouldCheckDataRows", BindingFlags.NonPublic | BindingFlags.Instance);
                    fi.SetValue(this, value);
                }
            }

            protected override void checkbox_ToggleStateChanged(object sender, StateChangedEventArgs args)
            {
                if (SuspendProcessingToggleStateChanged)
                {
                    return;
                }

                if (this.ViewTemplate != null && !this.ViewTemplate.IsSelfReference && !this.MasterTemplate.IsSelfReference)
                {
                    this.MasterTemplate.BeginUpdate();
                }
                else
                {
                    this.TableElement.BeginUpdate();
                }

                object valueState = DBNull.Value;

                if (args.ToggleState == ToggleState.On)
                {
                    valueState = true;
                }
                else if (args.ToggleState == ToggleState.Off)
                {
                    valueState = false;
                }
                else if (args.ToggleState == ToggleState.Indeterminate)
                {
                    valueState = null;
                }

                RaiseToggleStateEvent();

                if (!ShouldCheckDataRows)
                {
                    if (this.ViewTemplate != null && !this.ViewTemplate.IsSelfReference && !this.MasterTemplate.IsSelfReference)
                    {
                        this.MasterTemplate.EndUpdate(true, new DataViewChangedEventArgs(ViewChangedAction.DataChanged));
                    }

                    return;
                }

                this.GridViewElement.EditorManager.EndEdit();

                this.TableElement.BeginUpdate();
                this.MasterTemplate.MasterViewInfo.TableSearchRow.SuspendSearch();
                List<GridViewRowInfo> list = GetRowsToIterateOver();
                foreach (GridViewRowInfo rowInfo in list)
                {
                    GridViewGroupRowInfo groupRow = rowInfo as GridViewGroupRowInfo;

                    if (groupRow != null)
                    {
                        this.CheckAllCheckBoxInChildRows(groupRow, valueState);
                    }
                    else
                    {
                        rowInfo.Cells[this.ColumnIndex].Value = valueState;
                    }
                }
                this.MasterTemplate.MasterViewInfo.TableSearchRow.ResumeSearch();
                this.TableElement.EndUpdate(false);

                if (this.ViewTemplate != null && !this.ViewTemplate.IsSelfReference && !this.MasterTemplate.IsSelfReference)
                {
                    this.MasterTemplate.EndUpdate(true, new DataViewChangedEventArgs(ViewChangedAction.DataChanged));
                }
                else
                {
                    this.TableElement.EndUpdate(false);
                }

                this.TableElement.Update(GridUINotifyAction.DataChanged);
            }

            private void CheckAllCheckBoxInChildRows(GridViewGroupRowInfo row, object state)
            {
                List<GridViewRowInfo> list = new List<GridViewRowInfo>();

                foreach (GridViewRowInfo rowInfo in row.ChildRows)
                {
                    list.Add(rowInfo);
                }

                foreach (GridViewRowInfo rowInfo in list)
                {
                    GridViewGroupRowInfo groupInfo = rowInfo as GridViewGroupRowInfo;
                    if (groupInfo != null)
                    {
                        this.CheckAllCheckBoxInChildRows(groupInfo, state);
                    }
                    else
                    {
                        rowInfo.Cells[this.ColumnIndex].Value = state;
                    }
                }
            }

            private List<GridViewRowInfo> GetRowsToIterateOver()
            {
                if (this.ViewTemplate != null && this.ViewTemplate.IsSelfReference)
                {
                    PrintGridTraverser traverser = new PrintGridTraverser(this.ViewInfo);
                    List<GridViewRowInfo> result = new List<GridViewRowInfo>();

                    while (traverser.MoveNext())
                    {
                        if (traverser.Current is GridViewDataRowInfo)
                        {
                            result.Add(traverser.Current);
                        }
                    }

                    return result;
                }

                return new List<GridViewRowInfo>(this.ViewInfo.Rows);
            }
        }
    }
Approved
Last Updated: 21 Aug 2019 08:47 by ADMIN
Completed
Last Updated: 20 Aug 2019 13:20 by ADMIN
Release R3 2019

By default, if you need to format the cells in RadCalendar, the ElementRender event is an appropriate solution. However, it doesn't process the row/column header cell elements illustrated in the attached screenshot.

Workaround:

            MonthViewElement mve = (MonthViewElement)this.radCalendar1.CalendarElement.CalendarVisualElement;
            foreach (CalendarCellElement cell in mve.TableElement.Children)
            {
                if (cell.Row == 0)
                {
                    cell.DrawFill = true;
                    cell.BackColor = Color.Red;
                } 
            } 

Completed
Last Updated: 20 Aug 2019 11:34 by ADMIN
Release R3 2019

Please refer to the attached sample project and run it. Select a random item and press the button. You will obtain the error. If no selection is available, the item is removed as expected. 

Workaround: use Begin/EndUpdate block while deleting a record from the DataTable:

        Me.RadGanttView1.BeginUpdate()
        _dataset.Tables("Tasks").Rows.RemoveAt(2)
        Me.RadGanttView1.EndUpdate()

Approved
Last Updated: 19 Aug 2019 05:00 by ADMIN
Changing the preferred width of columns to percentages from the Table Properties dialog actually sets them in pixels.

Steps to reproduce:
1) Insert a table

2) select table column property and set preferred width to 20%

3) press "next column" button and set preferred width to 20% 

4) Go to previous columns 

Expected: Column width is set in percentage.

Actual: Some (or all) columns have width set in pixels.
Completed
Last Updated: 15 Aug 2019 15:27 by ADMIN
Release R3 2019 (LIB 2019.2.819)
To reproduce:
1. Add a pin to the map.
radMap1.Layers.Add(new MapLayer("PinLayer"));
MapPin pin = new MapPin(new Telerik.WinControls.UI.Map.PointG(47.60357, -122.32945));
pin.BackColor = Color.Red;
radMap1.Layers[0].Add(pin);
2. Run the project and zoom out.
3. Resize vertically the map(form).

Workaround:
Call Pan method to recalculate RadMapElement.ViewportInPixels on SizeChanged. 
private void RadMap1_SizeChanged(object sender, EventArgs e)
{
    this.radMap1.Pan(this.radMap1.MapElement.PanOffset.Width, this.radMap1.MapElement.PanOffset.Height);
}
Completed
Last Updated: 15 Aug 2019 14:26 by ADMIN
Release R3 2019 (LIB 2019.2.819)

To reproduce:

private void RadButton5_Click(object sender, EventArgs e)
{
    RadButton labelControl = new RadButton();
    labelControl.Size = new Size(200, 30);
    labelControl.Text = "Test";

    layoutControlItem1.AssociatedControl = labelControl;
}

Workaround: 
private void RadButton5_Click(object sender, EventArgs e)
{
    RadButton labelControl = new RadButton();
    labelControl.Size = new Size(200, 30);
    labelControl.Text = "Test";

    ((RadLayoutControlControlCollection)this.radLayoutControl1.Controls).RemoveInternal(layoutControlItem1.AssociatedControl);
    ((RadLayoutControlControlCollection)this.radLayoutControl1.Controls).AddInternal(labelControl);
    layoutControlItem1.AssociatedControl = labelControl;

    layoutControlItem1.UpdateControlBounds();
   
}

 

Completed
Last Updated: 15 Aug 2019 14:26 by ADMIN
Release R3 2019 (LIB 2019.2.819)
Created by: Jeff
Comments: 1
Category: FileDialogs
Type: Bug Report
1
If I set .InitialDirectory to a network path, the Tree Navigation Pane shows multiple instances of the network path. I've collapsed several of them so you can see it more easily in the image. Am I missing a setting? Can this be prevented in the Directory Requesting sub?
Completed
Last Updated: 15 Aug 2019 14:26 by ADMIN
Release R3 2019 (LIB 2019.2.819)
Created by: Jeff
Comments: 1
Category: FileDialogs
Type: Bug Report
1

Maybe I'm doing this wrong but it works with the standard .Net SaveFileDialog. No matter how many filters I add or which FilterIndex I set, the last filter is always activated.

With DF.RadSaveFileDialog1
    .SaveFileDialogForm.StartPosition = FormStartPosition.CenterParent
    .SaveFileDialogForm.Text = "Save File As - " & DF.OriginalTitle
    .SaveFileDialogForm.ThemeName = "Fluent"
    .CustomPlaces.Clear()
    .ShowNetworkLocations = False
    .InitialDirectory = My.Application.Info.DirectoryPath()
    .Filter = "Word Document (*.docx)|*.docx|PDF Document (*.pdf)|*.pdf"
    .RestoreDirectory = True
    .FilterIndex = 1
    .ShowDialog()
End With
Completed
Last Updated: 15 Aug 2019 14:26 by ADMIN
Release R3 2019 (LIB 2019.2.819)

To reproduce:

this.radMaskedEditBox1.Mask = "n";
this.radMaskedEditBox1.MaskType = Telerik.WinControls.UI.MaskType.Numeric;
radMaskedEditBox1.Value = 1234;
radMaskedEditBox1.MaskedEditBoxElement.Culture = new CultureInfo("en-CA") { NumberFormat = { NumberDecimalDigits = 0, NumberGroupSeparator = String.Empty } };

 

Completed
Last Updated: 15 Aug 2019 13:54 by ADMIN
Release R3 2019 (LIB 2019.2.819)

Please run the attached sample project. Select one of the child tasks and click the button. The new task is expected to be inserted at the selected item's position. However, it is appended at the bottom as it is demonstrated in the gif file.

Workaround: rebind RadGanttView after inserting a new row to the DataTable: 

    Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
        Try
            If Me.RadGanttView1.SelectedItem IsNot Nothing Then
                Dim i_rowIndex As Int32 = _dataset.Tables("Tasks").Rows.IndexOf(Me.RadGanttView1.SelectedItem.DataBoundItem.Row)
                Dim i_datarow As DataRow = _dataset.Tables("Tasks").NewRow
                Dim i_startDate As Date = New Date(Today.Year, Today.Month, Today.Day, 8, 0, 0)
                i_datarow("ID") = 3001
                i_datarow("ParentID") = _projektID
                i_datarow("Bezeichnung") = "inserted Aufgabe"
                i_datarow("Start") = i_startDate.AddHours(6 * 5)
                i_datarow("Ende") = i_startDate.AddHours(6 + 100)
                _dataset.Tables("Tasks").Rows.InsertAt(i_datarow, i_rowIndex)
                Me.RadGanttView1.DataSource = Nothing
                With Me.RadGanttView1.GanttViewElement
                    .TaskDataMember = "Tasks"
                    .ChildMember = "ID"
                    .ParentMember = "ParentID"
                    .TitleMember = "Bezeichnung"
                    .StartMember = "Start"
                    .EndMember = "Ende"
                End With
                Me.RadGanttView1.DataSource = _dataset
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

 

Completed
Last Updated: 15 Aug 2019 13:26 by ADMIN
Release R3 2019 (LIB 2019.2.819)
Please run the attached sample and move the spreadsheet on a monitor with 125% DPI scaling. Then, enter some text in the first cell that exceeds the column's width and double-click the header to best-fit the column. You will notice that RadSpreadsheet hangs and it is not possible to proceed with the further execution of the form.
Approved
Last Updated: 13 Aug 2019 12:02 by ADMIN
Please run the attached sample project, click the button to start drawing and following the steps illustrated in the gif file.
Approved
Last Updated: 07 Aug 2019 06:33 by ADMIN

Please follow the steps:

1. Run the attached sample project. 

2. Move the form to a monitor with 125% DPI scaling.

3. Resize the form to make the spreadsheet bigger. You will notice that the column/row headers are missing for the last column/row headers. 

Declined
Last Updated: 06 Aug 2019 13:07 by ADMIN
Use attached to reproduce.

Workaround:
RadTextBox tb = new RadTextBox();

tb.Font = new Font(Font.Name, 12F, FontStyle.Bold);

tb.MaxLength = 200;
tb.Name = "textBox1";
tb.Text = "<Required>";
tb.Location = new Point(49, 7);
var pixels = tb.Font.SizeInPoints * 96 / 72;
tb.TextBoxElement.TextBoxItem.HostedControl.MinimumSize = new Size(0, (int)pixels + 6);

Approved
Last Updated: 06 Aug 2019 04:49 by ADMIN
The scale factor is not imported from documents with no information about the selection state.
Approved
Last Updated: 05 Aug 2019 12:03 by ADMIN
Created by: Ken
Comments: 1
Category: Map
Type: Bug Report
1
Is there a way to not allow the map to WrapAround?