Declined
Last Updated: 15 Oct 2015 10:42 by ADMIN
BindingList<Item> items = new BindingList<Item>();

public Form1()
{
    InitializeComponent();

    for (int i = 0; i < 20; i++)
    {
        items.Add(new Item(i % 4, "Item" + i, "Type" + i % 2));
    }
    this.radGridView1.DataSource = items;
    this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;
}

public class Item
{
    public int Id { get; set; }

    public string Name { get; set; }

    public string Type { get; set; }

    public Item(int id, string name, string type)
    {
        this.Id = id;
        this.Name = name;
        this.Type = type;
    }
}

private void radButton1_Click(object sender, EventArgs e)
{
    items.Insert(0, new Item(2, "Test", "Type0"));
}

WORKAROUND I:

GridViewSynchronizationService.SuspendEvent(this.radGridView1.MasterTemplate, KnownEvents.CurrentChanged);
Item item = new Item(2, "Test", "Type0");
items.Insert(0, item);
GridViewSynchronizationService.ResumeEvent(this.radGridView1.MasterTemplate, KnownEvents.CurrentChanged);

foreach (GridViewRowInfo row in this.radGridView1.Rows)
{
    if (row.DataBoundItem == item)
    {
        this.radGridView1.CurrentRow = row;

        break;
    }
}



WORKAROUND II:

this.radGridView1.Rows.CollectionChanged += Rows_CollectionChanged;
this.radGridView1.GroupExpanding+=radGridView1_GroupExpanding;

List<GridViewRowInfo> expandedGroups = new List<GridViewRowInfo>();

private void radGridView1_GroupExpanding(object sender, GroupExpandingEventArgs e)
{
    if (!e.IsExpanded && shouldCollapse)
    {
        expandedGroups.Add(e.DataGroup.GroupRow);
    }
}

bool shouldCollapse = false;

private void radButton1_Click(object sender, EventArgs e)
{
    shouldCollapse = true;
    items.Insert(0, new Item(2, "Test", "Type0"));
}

private void Rows_CollectionChanged(object sender, Telerik.WinControls.Data.NotifyCollectionChangedEventArgs e)
{
    if (e.Action == Telerik.WinControls.Data.NotifyCollectionChangedAction.Add)
    {
        this.radGridView1.CurrentRow = e.NewItems[0] as GridViewRowInfo;
        this.radGridView1.CurrentRow.IsSelected = true;
        GridViewRowInfo parent = this.radGridView1.CurrentRow.Parent as GridViewRowInfo;
        if (parent != null)
        {
            parent.IsExpanded = true;
        }

        if (shouldCollapse)
        {
            shouldCollapse = false;
            foreach (GridViewRowInfo r in expandedGroups)
            {
                if (!ContainsParentRow(parent, r))
                {
                    r.IsExpanded = false;
                }
            }
            expandedGroups.Clear();
        }
    }
}

private bool ContainsParentRow(GridViewRowInfo parent, GridViewRowInfo r)
{
    GridViewGroupRowInfo group = r as GridViewGroupRowInfo;
    if (group != null)
    {
        foreach (GridViewRowInfo childRow in group.ChildRows)
        {
            return ContainsParentRow(parent, childRow);
        }
    }

    return parent == r.Parent;
}
Declined
Last Updated: 13 Mar 2015 16:03 by Vincent
The conditional formatting collection get deleted after closing the property builder.

To reproduce :

Add a gridview with a datasource.
Open property builder
Select a column
Advance -> ConditionalFormattingObjectList
Add a expression, set a name
Press Ok

If you click the ConditionalFormattingObjectList, you can see the expression

If you click close the Property Builder, the list is not saved when you open it again.
Declined
Last Updated: 05 Jun 2015 09:18 by ADMIN
When you use a custom GroupComparer for the MasterTemplate, grouping is performed successfully for the first time. However, if you remove all groups and perform grouping again for the same columns, the grid behavior is not as expected: you will notice groups mismatching or duplication. Here is a sample code snippet which incorrect behavior is illustrated on the attached gif file:

public Form1()
{
    InitializeComponent();

    DataTable dt = new DataTable();
    dt.Columns.Add("Reference");
    dt.Columns.Add("Test Case");
    dt.Columns.Add("ChBW");
    dt.Columns.Add("Voltage");
    dt.Columns.Add("Environmental Conditions");
    dt.Columns.Add("RadioAccessTechnology");

    dt.Rows.Add("4.2.1", "E-Utran FDD...", "10", "C Nominal-2", "T Nominal - V Nominal", "E-UTRAN Only");
    dt.Rows.Add("5.2.1", "E-Utran FDD...", "3", "C Nominal-1", "T Nominal - V Nominal", "E-UTRAN Only");
    dt.Rows.Add("14.2.1", "E-Utran FDD...", "1", "C Nominal-3", "T Nominal - V Nominal", "E-UTRAN Only");
    dt.Rows.Add("2.2.1", "E-Utran FDD...", "4", "C Nominal-2", "T Nominal - V Nominal", "E-UTRAN Only");
    dt.Rows.Add("7.2.1", "E-Utran FDD...", "12", "C Nominal-1", "T Nominal - V Nominal", "E-UTRAN Only");
    dt.Rows.Add("2.2.1", "E-Utran FDD...", "2", "C Nominal-3", "T Nominal - V Nominal", "E-UTRAN Only");

    this.radGridControlSelection.DataSource = dt;
    this.radGridControlSelection.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;

    this.radGridControlSelection.MasterTemplate.GroupComparer = new GroupComparer();
}

public class GroupComparer : IComparer<Group<GridViewRowInfo>>
{
    public int Compare(Group<GridViewRowInfo> x, Group<GridViewRowInfo> y)
    {
        if (x.Level != y.Level)
        {
        }
        DataGroup group = x as DataGroup;

        var a = x.Header;
        var b = y.Header;

        int valueA;
        int valueB;

        if (group == null)
        {
            group = y as DataGroup;
        }
        if (group != null && group.GroupDescriptor != null && group.GroupDescriptor.GroupNames.Count > 0)
        {
            string propertyName = group.GroupDescriptor.GroupNames.First().PropertyName;
            if ((propertyName.ToUpper() == "VOLTAGE"))
            {
                int indexA = GetIndexContain(a.ToString().Split(new char[] { '-' })[1]);
                int indexB = GetIndexContain(b.ToString().Split(new char[] { '-' })[1]);

                if (indexA == indexB)
                {
                    return 0;
                }
                else if (indexA < indexB)
                {
                    return -1;
                }
                else
                {
                    return 1;
                }
            }
            else if (propertyName.ToUpper() == "RADIOACCESSTECHNOLOGY")
            {
                return x.Key.ToString().CompareTo(y.Key.ToString());
            }
            // BAND
            else if (propertyName.ToUpper() == "CHBW")
            {
                Int32.TryParse(a, out valueA);
                Int32.TryParse(b, out valueB);

                //ASCENDING SELECTED
                if (group.GroupDescriptor.GroupNames.First().Direction == ListSortDirection.Ascending)
                {
                    if (valueA > valueB)
                    {
                        return 1;
                    }
                    else if (valueA < valueB)
                    {
                        return -1;
                    }
                    else
                    {
                        return 0;
                    }
                }
                //DESCENDING
                else
                {
                    if (valueA > valueB)
                    {
                        return -1;
                    }
                    else if (valueA < valueB)
                    {
                        return 1;
                    }
                    else
                    {
                        return 0;
                    }
                }
            }
        }
        return x.Key.ToString().CompareTo(y.Key.ToString());
    }

    private int GetIndexContain(string a)
    {
        int parsedValue;
        if (int.TryParse(a, out parsedValue))
        {
            return 10 - parsedValue;
        }
        return -1;
    }
}


Workaround:

public class Grid:RadGridView
{
    public override string ThemeClassName  
    { 
        get 
        { 
            return typeof(RadGridView).FullName;  
        }
    }

    protected override RadGridViewElement CreateGridViewElement()
    {
        return new CustomGridViewElement();
    }
}

public class CustomGridViewElement : RadGridViewElement
{
    protected override Type ThemeEffectiveType     
    { 
        get    
        { 
            return typeof(RadGridViewElement);     
        }
    }

    protected override MasterGridViewTemplate CreateTemplate()
    {
        return new CustomMasterGridViewTemplate();
    }
}

public class CustomMasterGridViewTemplate : MasterGridViewTemplate
{
    protected override GridViewListSource CreateListSource()
    {
        return new CustomGridViewListSource(this);
    }
}

public class CustomGridViewListSource : GridViewListSource
{
    public CustomGridViewListSource(GridViewTemplate template) : base(template)
    {
    }

    protected override RadCollectionView<GridViewRowInfo> CreateDefaultCollectionView()
    {
        return new CustomGridDataView(this);
    }
}

public class CustomGridDataView : GridDataView
{
    public CustomGridDataView(GridViewListSource listSource) : base(listSource)
    {
    }

    protected override GroupBuilder<GridViewRowInfo> CreateGroupBuilder()
    {
        return new CustomGroupBuilder(this.Indexer);
    }
}

public class CustomGroupBuilder : GridGroupBuilder
{
    public CustomGroupBuilder(Index<GridViewRowInfo> index) : base(index)
    {
    }

    protected override Group<GridViewRowInfo> GetGroup(GroupCollection<GridViewRowInfo> cache,
        Group<GridViewRowInfo> newGroup, Group<GridViewRowInfo> parent, object key, int level)
    {
        GroupDescriptor currentDescriptor = this.CollectionView.GroupDescriptors[level];
        DataGroup group = (DataGroup)base.GetGroup(null, newGroup, parent, key, level);
        if (group.GroupDescriptor != null && group.GroupDescriptor != currentDescriptor)
        {
            SetGroupDescriptor(group, null);
            IGroupFactory<GridViewRowInfo> groupFactory = this.CollectionView.GroupFactory;
            group = (DataGroup)groupFactory.CreateGroup(key, parent);
            group.GroupBuilder = this;
        }
        SetGroupDescriptor(group, currentDescriptor);
        return group;
    }

    private void SetGroupDescriptor(DataGroup dataGroup, GroupDescriptor currentDescriptor)
    {
        FieldInfo fi = typeof(DataGroup).GetField("groupDescriptor", BindingFlags.NonPublic | BindingFlags.Instance);
        fi.SetValue(dataGroup, currentDescriptor);
    }
}
Declined
Last Updated: 24 Aug 2015 13:05 by ADMIN
DECLINED: This happens because you are setting a non-image value to a GridViewImageColumn. The GridViewImageColumn is designed to work with image data directly and if any non-image data is used with this column, this will result in a large number of internal exceptions which are thrown while the column tries to read the image. The throw operation is an expensive one and this causes the slowdown. Also, note that the slowdown is much heavier when running the application with the debugger attached, because when this is the case, each internally thrown exception is written to the console, and writing to the console is an even more expensive operation. 

If the image is to be applied on the CellFormatting event and the value of the cells in a column are not going to be images, then GridViewTextBoxColumn should be used instead.

To reproduce: add a RadGridView and an  ImageList with two images. Use the following code snippet:

public Form1()
{
    InitializeComponent();

    DataTable dt = new DataTable();
    for (int i = 0; i < 10; i++)
    {
        dt.Columns.Add("Pic" + i);
    }
    
    for (int i = 0; i < 100; i++)
    {
        DataRow newRow = dt.NewRow();
        foreach (DataColumn col in dt.Columns)
        {
            newRow[col.ColumnName] = i;
        }
        dt.Rows.Add(newRow);
    }
    radGridView1.AutoGenerateColumns = false;
    
    for (int i = 0; i < 10; i++)
    {
        GridViewImageColumn imgCol = new GridViewImageColumn("col" + i);
        imgCol.Width = 100;
        imgCol.FieldName = "Pic" + i;
        this.radGridView1.Columns.Add(imgCol);
    }

    this.radGridView1.DataSource = dt;

    this.radGridView1.CellFormatting += radGridView1_CellFormatting;
}

private void radGridView1_CellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.Row is GridViewDataRowInfo)
    {
        e.CellElement.Image = this.imageList1.Images[e.RowIndex % 2];
    }
}
Declined
Last Updated: 27 Feb 2015 14:27 by ADMIN
Declined
Last Updated: 03 May 2016 10:35 by ADMIN
The must be a method that allows the users to make the text vertical for example.
This item is migrated to the Telerik Document Processing portal: 
http://feedback.telerik.com/Project/184/Feedback/Details/190118 
Please use the new item for commenting, voting and subscribing instead of this one.
Declined
Last Updated: 10 Apr 2015 11:33 by ADMIN
Created by: Aron
Comments: 1
Category: Scheduler/Reminder
Type: Feature Request
1
Add AgendaView to the winforms RadScheduler.
(Seeing as the view exists in the ASP version of the RadScheduler).
Declined
Last Updated: 02 Dec 2014 11:11 by ADMIN
Created by: Fabian
Comments: 1
Category: PdfViewer
Type: Feature Request
1

			
Declined
Last Updated: 23 Feb 2015 07:26 by ADMIN
When you set a specific value to the RadTimePicker e.g.  new DateTime(2014, 5, 20, 8, 15, 30) and try to change the time via mouse wheel or up/down arrows, the date part is reset to DateTime.Now.

Resolution: 
This broke RadTimePicker functionality because many users have serialized in designer.cs/vb files MinValue and MaxValues and now they date part is take  under consideration - this can complete broke its application. Users should keep the date part in separate variable not in TimePicker Value property
Declined
Last Updated: 15 Oct 2015 11:04 by ADMIN
To reproduce: 
1. Add GridView which inherits the RadGridView
2. Populate the grid with some data
3. Add conditional formatting and set RowBackColor and CellBackColor 
4. Subscribe to RowFormatting event and change the font of selected row: 
void radGridView2_RowFormatting(object sender, RowFormattingEventArgs e)
{
    if (e.RowElement.IsSelected)
    {
        e.RowElement.Font = new Font(this.Font.FontFamily, this.Font.Size + 2, FontStyle.Bold);
    }
    else
    {
        e.RowElement.ResetValue(LightVisualElement.FontProperty, ValueResetFlags.Local);
        //e.RowElement.Font = this.Font;
    }
}

5. Select row with conditional formatting. The font of selected row is bold which is correct. Select another row and you will see that the previous row is still bold.

Workaround: 
Subscribe to CellFormatting event instead RowFormatting
void radGridView2_CellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.Row.IsSelected)
    {
        e.CellElement.Font = new Font(this.Font.FontFamily, this.Font.Size + 2, FontStyle.Bold);
    }
    else
    {
        e.CellElement.ResetValue(LightVisualElement.FontProperty, ValueResetFlags.Local);
    }
}
Declined
Last Updated: 03 May 2016 10:35 by Marco
This item is migrated to the Telerik Document Processing portal: 
http://feedback.telerik.com/Project/184/Feedback/Details/190100 
Please use the new item for commenting, voting and subscribing instead of this one.
Declined
Last Updated: 18 Sep 2014 14:58 by ADMIN
Telerik winforms demo application "bugtracker" issue:
reproduction:
1. drag the "bugs" window to touch the upper middle docking guide icon and without releasing the mouse button drag it further
Effect: please observe that the remainder of the "bugs window" will not be refreshed, you can draw with this window
The same issue can be also observed in the demo hub: drag > Tabstrip properties demo application and also in the DragDropService demo application.
Declined
Last Updated: 27 Jun 2016 12:11 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Sr.
Comments: 1
Category: Dock
Type: Bug Report
1
Workaround: FloatingWindow.FormElement.TitleBar.CloseButton.Enabled = True
Declined
Last Updated: 19 Feb 2018 13:32 by ADMIN
ADMIN
Created by: Telerik Admin
Comments: 3
Category: UI Framework
Type: Feature Request
1
A free configurable KANBAN-Board.

- Add N columns.
- Add tasks to column.
- Move task by drag and drop between columns.
- Task with header, image, link (or click event)
- Task as expandable container
Declined
Last Updated: 27 Sep 2016 07:28 by ADMIN
Please refer to the attached screenshot.

Workaround:

public Form1()
{
    InitializeComponent();

    DataTable dt = new DataTable();
    dt.Columns.Add("Id");
    dt.Columns.Add("Name");
    for (int i = 0; i < 5; i++)
    {
        dt.Rows.Add(i, "Item" + i);
    }

    this.radGridView1.DataSource = dt;
    this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill;

    this.radGridView1.AllowSearchRow = true;
    this.radGridView1.SearchRowPosition = Telerik.WinControls.UI.SystemRowPosition.Bottom;

    this.radGridView1.ViewDefinition = new CustomTableViewDefition();
}

public class CustomTableViewDefition : TableViewDefinition
{
    public override IRowView CreateViewUIElement(GridViewInfo viewInfo)
    {
        return new CustomTableElement();
    }
}

public class CustomTableElement : GridTableElement
{
    protected override RowsContainerElement CreateViewElement()
    {
        return new CustomRowsContainerElement();
    }
}

public class CustomRowsContainerElement : RowsContainerElement
{
    protected override SizeF ArrangeOverride(SizeF finalSize)
    {
        float y = 0;

        this.TopPinnedRows.Arrange(new RectangleF(0, y, finalSize.Width, this.TopPinnedRows.DesiredSize.Height));
        y += this.TopPinnedRows.DesiredSize.Height + ElementSpacing;

        this.ScrollableRows.Arrange(new RectangleF(0, y, finalSize.Width, this.ScrollableRows.DesiredSize.Height));
        y += this.ScrollableRows.DesiredSize.Height + ElementSpacing;

        this.BottomPinnedRows.Arrange(new RectangleF(0, finalSize.Height - this.BottomPinnedRows.DesiredSize.Height,
            finalSize.Width, this.BottomPinnedRows.DesiredSize.Height));

        return finalSize;
    }
}
Declined
Last Updated: 11 Mar 2019 12:39 by ADMIN
A sample for the required functionality:
public void AddMarker(RadMap Map)
{
    SearchRequest r = new SearchRequest();
    r.Query = "Paris, France";
    r.UserData = new Guid();           
    bingProvider.SearchCompleted += BingProvider_SearchCompleted;
    bingProvider.SearchAsync(r);
}

private void BingProvider_SearchCompleted(object sender, SearchCompletedEventArgs e)
{
    //one cannot access the UserData here
}
Declined
Last Updated: 21 Nov 2016 07:11 by ADMIN
Created by: BlueStack
Comments: 2
Category: UI Framework
Type: Feature Request
1
Our customers are located in Russian and CIS. So, the most common language is Russian. Telerik WinForms controls doesn't provide official Russian localization. Yeah, we can translate it, but it's too hard to contact with translators and support them in translation questions. And, of course, it takes money resources. We'd rather pay more monay for Telerik WinForms UI with official Russian localization than we spend money to translators.

Thanks!
Declined
Last Updated: 03 May 2016 10:35 by ADMIN
This item is migrated to the Telerik Document Processing portal: 
http://feedback.telerik.com/Project/184/Feedback/Details/190078 
Please use the new item for commenting, voting and subscribing instead of this one.
Declined
Last Updated: 04 May 2016 11:31 by ADMIN
For all characters which cannot be represented in XML as defined by the XML 1.0 specification, the characters are escaped using the Unicode numerical character representation escape character format _xHHHH_, where H
represents a hexadecimal character in the character's value. This is dedined in the OpenXML specification in 22.9.2.19 ST_Xstring (Escaped String).

Currently this causes the following issues:

- Documents conaining such characters are imported incorrectly, e.g. <si><t>_x001B_</t></si> is imported as the plain text _x001B_

- ArgumentException with clarification similar to "' ', hexadecimal value 0x1B, is an invalid character." is thrown when trying to export such documents. Example code to reproduce:

            Workbook workbook = new Workbook();
            Worksheet worksheet = workbook.Worksheets.Add();

            CellSelection selection = worksheet.Cells[1, 1]; //B2 cell
            selection.SetValue(string.Format("Error Value: {0} ", Encoding.ASCII.GetString(new byte[] { 27 })));

            string fileName = @"D:\temp\SampleFile.xlsx";
            IWorkbookFormatProvider formatProvider = new XlsxFormatProvider();
            using (FileStream output = new FileStream(fileName, FileMode.Create))
            {
                formatProvider.Export(workbook, output);
            }
This item is migrated to the Telerik Document Processing portal: 
http://feedback.telerik.com/Project/184/Feedback/Details/190228 
Please use the new item for commenting, voting and subscribing instead of this one.