Completed
Last Updated: 04 Jul 2014 11:02 by ADMIN
To reproduce:
1.Add a RadListView and set its ViewType property to ListViewType.DetailsView.
2.Change the RadListView.Cursor property to Cursors.Hand.

As a result the cursor is not applied at all. 

Workaround:
public class CustomRadListView : RadListView
{
    public override string ThemeClassName  
    { 
        get 
        { 
            return typeof(RadListView).FullName;  
        }
    }
    
    public CustomRadListView()
    {
    }

    protected override RadListViewElement CreateListViewElement()
    {
        return new CustomRadListViewElement();
    }
}

public class CustomRadListViewElement : RadListViewElement
{
    protected override Type ThemeEffectiveType     
    { 
        get    
        { 
            return typeof(RadListViewElement);     
        }
    }
    
    public CustomRadListViewElement()
    {
    }

    protected override BaseListViewElement CreateViewElement()
    {
        if (this.ViewType == ListViewType.DetailsView)
        {
            return new CustomDetailListViewElement(this);
        }
        return base.CreateViewElement();
    }
}

public class CustomDetailListViewElement : DetailListViewElement
{ 
    Cursor initialCursor = null;

    protected override Type ThemeEffectiveType     
    { 
        get    
        { 
            return typeof(DetailListViewElement);     
        }
    }

    public CustomDetailListViewElement(RadListViewElement owner) : base(owner)
    {
    }

    protected override bool ProcessMouseUp(MouseEventArgs e)
    {
        if (initialCursor == null)
        {
            initialCursor = this.ElementTree.Control.Cursor;
        }
        bool result = base.ProcessMouseUp(e);
        this.ElementTree.Control.Cursor = initialCursor;
        return result;
    }
    
    protected override bool ProcessMouseMove(MouseEventArgs e)
    {
        if (initialCursor == null)
        {
            initialCursor = this.ElementTree.Control.Cursor;
        }
       
        this.Owner.ColumnResizingBehavior.HandleMouseMove(e.Location);
        DetailListViewHeaderCellElement headerCell =
            this.ElementTree.GetElementAtPoint(e.Location) as DetailListViewHeaderCellElement;

        if (this.Owner.ColumnResizingBehavior.IsResizing)
        {
            return true;
        }
        if (headerCell != null && headerCell.IsInResizeLocation(e.Location))
        {
            this.ElementTree.Control.Cursor = Cursors.SizeWE;
        }
        else
        {
            if (initialCursor != null)
            {
                this.ElementTree.Control.Cursor = initialCursor;
            }
            else
            {
                this.ElementTree.Control.Cursor = Cursors.Default;
            }
        }
    
        return true;
    }
}
Completed
Last Updated: 05 Jun 2014 07:08 by ADMIN
ADMIN
Created by: Nikolay
Comments: 0
Category:
Type: Bug Report
3
ExpandAll/CollapseAll API for groups will be a nice addition to RadListView. This will avoid iteration over the groups.
Completed
Last Updated: 02 Jun 2014 12:28 by Chris Ward
To reproduce: Add a RadListVIew to a Form  with the following properties:

this.ListView.ItemSize = new System.Drawing.Size(200, 25);
this.ListView.FullRowSelect = false;
this.ListView.AllowArbitraryItemHeight = true;
this.ListView.ShowCheckBoxes = true;
this.ListView.ViewType = Telerik.WinControls.UI.ListViewType.IconsView;


Add the following items as follows:

string[] counters = new string[]{
    "ATMEL BIRCH [XFC]Read IOs/Sec - Avg",
    "ATMEL ELM [XFC]Read IOs/Sec - Avg",
    "ATMEL OAK [XFC]Read IOs/Sec - Avg",
    "ATMEL POPLAR [XFC]Read IOs/Sec - Avg",
    "ATMEL WALNUT [XFC]Read IOs/Sec - Avg"
};

When you start the application you will notice that some items are wrapped and some have their text cut off.

Workaround:

Subscribe to the VisualItemFormatting event and set FitToSizeMode to FitToParentPadding and Padding to 5:

void CounterList_VisualItemFormatting(object sender, ListViewVisualItemEventArgs e)
{
    e.VisualItem.Padding = new Padding(5);
    e.VisualItem.FitToSizeMode = Telerik.WinControls.RadFitToSizeMode.FitToParentPadding;
}
Completed
Last Updated: 02 Jun 2014 12:02 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Sr.
Comments: 0
Category:
Type: Bug Report
0
When using vertical IconView with AllowArbitraryItemHeight = true or horizontal IconVIew with AllowArbitraryItemWidth = true in some cases the last items are cut.

To reproduce:
1. Add a RadListView and use the following code snipept:

public Form1()
{
    InitializeComponent();

    string[] lines = Properties.Resources.Folders.Split(Environment.NewLine.ToArray(),
        StringSplitOptions.RemoveEmptyEntries);
    BindingList<string> items = new BindingList<string>();
    this.radListView1.BeginUpdate();
    foreach (string line in lines)
    {
        this.radListView1.Items.Add(line);
    }
    this.radListView1.EndUpdate();
    
    this.radListView1.ViewType = Telerik.WinControls.UI.ListViewType.IconsView;
    radListView1.ListViewElement.ViewElement.Orientation = Orientation.Horizontal;
    radListView1.AllowArbitraryItemWidth = true;
    radListView1.AllowArbitraryItemHeight = false;
}

Workaround:
public class CustomListView : RadListView
{
    public override string ThemeClassName
    {
        get
        {
            return typeof(RadListView).FullName;
        }
        set
        {
            base.ThemeClassName = value;
        }
    }

    protected override RadListViewElement CreateListViewElement()
    {
        return new CustomListViewElement();
    }
}

public class CustomListViewElement : RadListViewElement
{
    protected override BaseListViewElement CreateViewElement()
    {
        if (this.ViewType == ListViewType.IconsView)
        {
            return new CustomIconViewElement(this);
        }
        return base.CreateViewElement();
    }

    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(RadListViewElement);
        }
    }
}

public class CustomIconViewElement : IconListViewElement
{
    public CustomIconViewElement(RadListViewElement owner)
        : base(owner)
    {

    }

    protected override VirtualizedStackContainer<ListViewDataItem> CreateViewElement()
    {
        return new CustomIconViewContainer(this);
    }

    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(IconListViewElement);
        }
    }
}

public class CustomIconViewContainer : IconListViewContainer
{
    public CustomIconViewContainer(IconListViewElement owner)
        : base(owner)
    {

    }

    private bool Grouped
    {
        get
        {
            return this.owner.Owner.ShowGroups && (this.owner.Owner.EnableCustomGrouping || this.owner.Owner.EnableGrouping);
        }
    }

    RectangleF clientRect;

    protected override bool BeginMeasure(SizeF availableSize)
    {
        this.clientRect = new RectangleF(Padding.Left, Padding.Top,
                                         availableSize.Width - Padding.Horizontal, availableSize.Height - Padding.Vertical);
        return base.BeginMeasure(availableSize);
    }

    protected override SizeF ArrangeVertical(SizeF finalSize)
    {
        float x = clientRect.X, y = clientRect.Y + this.ScrollOffset.Height;

        float maxHeight = 0;
        float maxWidth = 0;

        foreach (RadElement element in this.Children)
        {
            BaseListViewVisualItem visualItem = element as BaseListViewVisualItem;
            if (visualItem == null || visualItem.Data == null)
                continue;

            Size elementSize = this.ElementProvider.GetElementSize(visualItem.Data).ToSize();

            if (element is BaseListViewGroupVisualItem)
            {
                if (x != clientRect.X)
                {
                    x = clientRect.X;
                    y += maxHeight;
                    maxHeight = elementSize.Height;
                }

                maxHeight = Math.Max(maxHeight, elementSize.Height);
                maxWidth = Math.Max(maxWidth, elementSize.Width);

                RectangleF arrangeRect = new RectangleF(new PointF(x, y), elementSize);
                
                element.Arrange(arrangeRect);

                x = clientRect.X;
                y += elementSize.Height + this.ItemSpacing;
            }
            else
            {
                if (x + elementSize.Width > clientRect.Right && x != clientRect.X)
                {
                    x = clientRect.X;
                    y += maxHeight + this.ItemSpacing;
                    maxHeight = elementSize.Height;
                }

                maxHeight = Math.Max(maxHeight, elementSize.Height);
                maxWidth = Math.Max(maxWidth, elementSize.Width);

                if (x == clientRect.X &&
                    this.Grouped &&
                    (this.owner.Owner.Groups.Count > 0) &&
                    !this.owner.Owner.FullRowSelect)
                {
                    x += this.owner.Owner.GroupIndent;
                }

                RectangleF arrangeRect = new RectangleF(new PointF(x, y), elementSize);
                if (this.RightToLeft)
                {
                    arrangeRect = LayoutUtils.RTLTranslateNonRelative(arrangeRect, clientRect);
                }

                element.Arrange(arrangeRect);
                x += elementSize.Width + this.ItemSpacing;
            }
        }

        return finalSize;
    }

    protected override System.Drawing.SizeF ArrangeUngroupedHorizontal(System.Drawing.SizeF finalSize)
    {
        float x = clientRect.X + this.ScrollOffset.Width, y = clientRect.Y;

        float maxHeight = 0;
        float maxWidth = 0;

        foreach (RadElement element in this.Children)
        {
            BaseListViewVisualItem visualItem = element as BaseListViewVisualItem;
            if (visualItem == null || visualItem.Data == null)
                continue;

            Size elementSize = this.ElementProvider.GetElementSize(visualItem.Data).ToSize();

            if (y + elementSize.Height > clientRect.Bottom && y != clientRect.Y)
            {
                y = clientRect.Y;
                x += maxWidth + this.ItemSpacing;
                maxWidth = elementSize.Width;
            }

            maxHeight = Math.Max(maxHeight, elementSize.Height);
            maxWidth = Math.Max(maxWidth, elementSize.Width);

            RectangleF arrangeRect = new RectangleF(new PointF(x, y), elementSize);
            if (this.RightToLeft)
            {
                arrangeRect = LayoutUtils.RTLTranslateNonRelative(arrangeRect, clientRect);
            }

            element.Arrange(arrangeRect);
            y += elementSize.Height + this.ItemSpacing;
        }

        return finalSize;
    }

    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(IconListViewContainer);
        }
    }
}
Completed
Last Updated: 02 Jun 2014 11:58 by ADMIN
ADMIN
Created by: Georgi I. Georgiev
Comments: 0
Category:
Type: Bug Report
0
To reproduce:
Add a ListView and bind it to a BindingList of some class. Clear the binding list and fill it again a few times. You should see that one item is selected and another has MouseOver effect.
Workaround:
this.radItems.ListViewElement.ViewElement.ViewElement.ElementProvider.ClearCache();
Completed
Last Updated: 02 Jun 2014 11:26 by ADMIN
Steps to reproduce:
1. Add a RadListView to a form
2. Add items so the vertical scroll bar appears.
3. Set the Scroller.ScrollState to ScrollState.AlwaysHide
this.radListView1.ListViewElement.ViewElement.Scroller.ScrollState = ScrollState.AlwaysHide;
4. Set the EnableKineticScrolling to true.
Run the project and try to scroll with the mouse wheel or with the Kinetic scrolling. You will see that nothing happens.
Declined
Last Updated: 31 May 2014 08:30 by ADMIN
DECLINED: Data items must implement the INotifyPropertyChanged interface in order for the RadListView to be able to automatically reflect the changes. Here is how MyObject should be implemented:
    public class MyObject : INotifyPropertyChanged
    {
        private string name;

        public MyObject(string name)
        {
            this.name = name;
        }

        public string Name
        {
            get
            {
                return this.name;
            }
            set
            {
                this.name = value;
                if (this.PropertyChanged != null)
                {
                    this.PropertyChanged(this, new PropertyChangedEventArgs("Name"));
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }





Reproduce:
-add a RadListView and bind it to a BindingList
-add a RadButton and implement its Click event to modify an item in the BindingList
The expected behaviour is to see the RadListView visually updated, but only DataSource collection is updated. Refreshing the RadListView does not help.

Workaround:
public partial class Form1 : Form
    {
        BindingList<MyObject> bindingList;

        public Form1()
        {
            InitializeComponent();

            bindingList = new BindingList<MyObject>();
            bindingList.Add(new MyObject("Item1"));
            bindingList.Add(new MyObject("Item2"));
            bindingList.Add(new MyObject("Item3"));
            bindingList.Add(new MyObject("Item4"));

            this.radListView1.DataSource = bindingList;
            this.radListView1.DisplayMember = "Name";
        }

        private void radButton1_Click(object sender, EventArgs e)
        {
            if (this.radListView1.SelectedItem != null)
            {
                bindingList[1].Name = "NewName";
                
                foreach (var item in this.radListView1.ListViewElement.ViewElement.Children[0].Children)
                {
                    ((SimpleListViewVisualItem)item).Synchronize();
                }
            }
        }
    }

    public class MyObject 
    {
        private string name;

        public MyObject(string name)
        {
            this.name = name;
        }

        public string Name
        {
            get
            {
                return this.name;
            }
            set
            {
                this.name = value;
            }
        }
    }
Completed
Last Updated: 23 Apr 2014 12:56 by ADMIN
ADMIN
Created by: Plamen
Comments: 0
Category:
Type: Feature Request
3
Currently, you could not change the position of the check box. The code below does not effect at all the appearance of the checkbox in the RadListView control:
e.VisualItem.ToggleElement.Alignment = System.Drawing.ContentAlignment.MiddleCenter;
e.VisualItem.ToggleElement.TextImageRelation = TextImageRelation.ImageAboveText;
e.VisualItem.ToggleElement.TextAlignment = System.Drawing.ContentAlignment.TopCenter;
e.VisualItem.ToggleElement.ImageAlignment = System.Drawing.ContentAlignment.BottomCenter;
Completed
Last Updated: 31 Mar 2014 10:14 by ADMIN
To reproduce: -add RadListView and use the following code: public Form1() { InitializeComponent(); //add two columns to RadListView at design time this.radListView1.ViewType = Telerik.WinControls.UI.ListViewType.DetailsView; this.radListView1.AllowArbitraryItemHeight = true; this.radListView1.AllowArbitraryItemWidth = true; this.radListView1.ShowColumnHeaders = false; AddSingleTask(new FastTask("Sample Title", new DateTime(2013,03,29),"Parent Title","Owner Title",3)); AddSingleTask(new FastTask("Sample Title", new DateTime(2013,03,15),"Parent Title","Owner Title",3)); } private void AddSingleTask(FastTask task) { string[] subitems = new string[2]; string col1 = task.Title + "\nDue: "; if (task.DueDate > DateTime.MinValue) { col1 += task.DueDate.ToShortDateString(); } subitems[0] = col1; subitems[1] = "Location: " + task.ParentTitle + "\nOwner: " + task.Owner; ListViewDataItem item = new ListViewDataItem(task.Title, subitems); item.Image = Properties.Resources.check; item.Tag = task; item.ForeColor = Color.DarkRed; this.radListView1.Items.Add(item); } public class FastTask { public string Title { get; set; } public DateTime DueDate { get; set; } public string ParentTitle { get; set; } public string Owner { get; set; } public int ClosedById { get; set; } public FastTask(string title, DateTime dueDate, string parentTitle, string owner, int closedById) { this.Title = title; this.DueDate = dueDate; this.ParentTitle = parentTitle; this.Owner = owner; this.ClosedById = closedById; } } 

Workaround: subscribe to VisualItemFormatting event and customize DetailListViewDataCellElement as follows: this.radListView1.VisualItemFormatting += radListView1_VisualItemFormatting; private void radListView1_VisualItemFormatting(object sender, ListViewVisualItemEventArgs e) { if (e.VisualItem is DetailListViewVisualItem) { DetailListViewVisualItem item = e.VisualItem as DetailListViewVisualItem; if (item.CellsContainer.Children.Count > 0) { ((DetailListViewDataCellElement)item.CellsContainer.Children[0]).TextImageRelation = TextImageRelation.ImageBeforeText; ((DetailListViewDataCellElement)item.CellsContainer.Children[0]).ImageAlignment = ContentAlignment.MiddleLeft; } } }
Completed
Last Updated: 31 Mar 2014 10:14 by ADMIN
To reproduce:
Add a RadListView with some items. The issue appears sporadically and there are no exact steps to reproduce known, it appears to be very environment specific. You simply need to change the theme and drag an item. Themes which have been reported:
Aqua
Office2007Black
Office2007Silver
Office2010Blue
VisualStudio2012Dark
VisualStudi2012Light
Windows7
Windows8

Workaround:
Use the following custom RadListView:
public class MyListView : RadListView
{
protected override RadListViewElement CreateListViewElement()
{
return new MyListViewElement();
}
}

public class MyListViewElement : RadListViewElement
{
protected override BaseListViewElement CreateViewElement()
{
if (this.ViewType == ListViewType.IconsView)
{
return new MyIconsListViewElement(this); 
}

return base.CreateViewElement();
}
}

public class MyIconsListViewElement : IconListViewElement
{
public MyIconsListViewElement(RadListViewElement owner)
: base(owner)
{
}

public override Point GetDragHintLocation(BaseListViewVisualItem visualItem, Point mouseLocation)
{
if (this.DragHint == null)
{
return Point.Empty;
}

Rectangle itemBounds = visualItem.ElementTree.Control.RectangleToScreen(visualItem.ControlBoundingRectangle);
Padding margins = Padding.Empty;
int imageHeight = 1;

RadImageShape imageShape = this.DragHint;
if (imageShape != null)
{
imageHeight = imageShape.Image.Size.Height;
margins = imageShape.Margins;
}
else
{
return Point.Empty;
}

bool isDropAtTop = mouseLocation.Y <= visualItem.Size.Height / 2;

int y = isDropAtTop ? itemBounds.Y : itemBounds.Bottom;
return new Point(itemBounds.X - margins.Left, y - imageHeight / 2);
}
}
Completed
Last Updated: 11 Mar 2014 11:51 by ADMIN
To reproduce:
- Set RadListView ViewType to DetailsView.
- You will notice that there is additional white space between the header cells and items area.

Workaround:
Set negative margin to the header cell.
Completed
Last Updated: 20 Feb 2014 15:17 by ADMIN
To reproduce:
- add two RadListView controls and use the following code:

this.radListView1.ViewType = ListViewType.DetailsView;
this.radListView1.Columns.Add("1.Drag To Right Page");
this.radListView1.Columns.Add("2.Drag To Right Page");
this.radListView1.Columns.Add("3.Drag To Right Page");

this.radListView2.ViewType = ListViewType.DetailsView;
this.radListView2.Columns.Add("1.Drag To Left Page");
this.radListView2.Columns.Add("2.Drag To Left Page");
this.radListView2.Columns.Add("3.Drag To Left Page");

Run the application and drag a column from one list view to another list view. You will notice that when the dragged column is dropped over different listview than its owner, RadListView behave strangely.

Workaround: implement custom DetailListViewDragDropService and prevent the possibility to drag over different listview than the dragged column's owner:

public Form1()
{
    InitializeComponent();

    this.radListView1.ViewType = ListViewType.DetailsView;
    DetailListViewElement detailListViewElement1 = this.radListView1.ListViewElement.ViewElement as DetailListViewElement ;
    if (detailListViewElement1 != null)
    {
        FieldInfo fi = detailListViewElement1.GetType().GetField("columnDragDropService", BindingFlags.NonPublic | BindingFlags.Instance);
        fi.SetValue(detailListViewElement1, new CustomDragDropService(detailListViewElement1));
    }
    this.radListView1.Columns.Add("1.Drag To Right Page");
    this.radListView1.Columns.Add("2.Drag To Right Page");
    this.radListView1.Columns.Add("3.Drag To Right Page");
  
    this.radListView2.ViewType = ListViewType.DetailsView;
    DetailListViewElement detailListViewElement2 = this.radListView2.ListViewElement.ViewElement as DetailListViewElement ;
    if (detailListViewElement2 != null)
    {
        FieldInfo fi = detailListViewElement2.GetType().GetField("columnDragDropService", BindingFlags.NonPublic | BindingFlags.Instance);
        fi.SetValue(detailListViewElement2, new CustomDragDropService(detailListViewElement2));
    }
    this.radListView2.Columns.Add("1.Drag To Left Page");
    this.radListView2.Columns.Add("2.Drag To Left Page");
    this.radListView2.Columns.Add("3.Drag To Left Page");
}

public class CustomDragDropService : DetailListViewDragDropService
{
    public CustomDragDropService(DetailListViewElement owner) : base(owner)
    {
    }

    protected override void OnPreviewDragOver(Telerik.WinControls.RadDragOverEventArgs e)
    { 
        DetailListViewCellElement targetElement = e.HitTarget as DetailListViewCellElement;
        ListViewDetailColumn targetColumn = targetElement.Data;
        DetailListViewCellElement draggedElement = e.DragInstance as DetailListViewCellElement;
        ListViewDetailColumn draggedColumn = draggedElement.Data;
        if (targetColumn == null || draggedColumn == null ||
            targetColumn.Owner != draggedColumn.Owner)
        {
            e.CanDrop = false;
            return;
        }
      
        base.OnPreviewDragOver(e);
    }
}
Declined
Last Updated: 20 Feb 2014 11:14 by ADMIN
Reason: this is the expected behavior.
Completed
Last Updated: 13 Feb 2014 11:05 by ADMIN
To reproduce:
- Add RadListView to a blank form and bind it to a datatable with large number of rows.
- Click the down arrow of the vertical scroll.

Workaround:

public class MyListView : RadListView
{
    protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e)
    {
        this.ListViewElement.ViewElement.VScrollBar.Capture = false;
        this.ListViewElement.ViewElement.VScrollBar.ThumbElement.Capture = false;


        base.OnMouseUp(e);
    }
    public override string ThemeClassName
    {
        get
        {
            return typeof(RadListView).FullName;
        }
    }
}
Completed
Last Updated: 11 Feb 2014 16:01 by ADMIN
To reproduce-
Apply the Office2007Black theme to a ListView.
Completed
Last Updated: 11 Feb 2014 16:00 by ADMIN
To reproduce-
Apply the Office2007Black theme to a ListView.
Completed
Last Updated: 13 Nov 2013 10:15 by ADMIN
To reproduce:

Add a RadListView with Icons mode and Horizontal orientation, call ensure visible on non visible items, you will see that the scrollbar's value is on maximum
Completed
Last Updated: 13 Nov 2013 03:51 by ADMIN
To reproduce:
Add a RadListView set its settings as follows:
this.radListView1.ViewType = Telerik.WinControls.UI.ListViewType.IconsView;
this.radListView1.ListViewElement.ViewElement.Orientation = Orientation.Horizontal;
this.radListView1.ItemSize = new Size(200, 200);

Add items:
this.radListView1.Items.Add("Item");
this.radListView1.Items.Add("Item");
this.radListView1.Items.Add("Item");

Lower the height of the form until its lower than the height of the items. You will notice that the items are moved to the right

Workaround:
public class ListView : RadListView
{
    protected override RadListViewElement CreateListViewElement()
    {
        return new ListViewElement();
    }
}

public class ListViewElement : RadListViewElement
{
    protected override BaseListViewElement CreateViewElement()
    {
        if (this.ViewType ==  ListViewType.IconsView)
        {
            return new IconsViewElement(this);
        }

        return base.CreateViewElement();
    }

    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(RadListViewElement);
        }
    }
}

public class IconsViewElement : IconListViewElement
{
    public IconsViewElement(RadListViewElement owner) 
        : base(owner)
    {
    }

    protected override VirtualizedStackContainer<ListViewDataItem> CreateViewElement()
    {
        return new IconsListViewContainer(this);
    }
}

public class IconsListViewContainer : IconListViewContainer
{
    private Rectangle clientRect;

    public IconsListViewContainer(BaseListViewElement owner) : base(owner)
    {
    }

    private bool Grouped
    {
        get
        {
            return this.owner.Owner.ShowGroups && (this.owner.Owner.EnableCustomGrouping || this.owner.Owner.EnableGrouping);
        }
    }

    protected override SizeF ArrangeUngroupedHorizontal(SizeF finalSize)
    {
        if (this.clientRect == null)
        {
            clientRect = (Rectangle)
                this.GetType().BaseType.GetField("clientRect", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)
                .GetValue(this);
        }

        float x = clientRect.X + this.ScrollOffset.Width, y = clientRect.Y;

        float maxHeight = 0;
        float maxWidth = 0;

        foreach (RadElement element in this.Children)
        {
            BaseListViewVisualItem visualItem = element as BaseListViewVisualItem;
            if (visualItem == null || visualItem.Data == null)
                continue;

            Size elementSize = this.ElementProvider.GetElementSize(visualItem.Data).ToSize();
            maxHeight = Math.Max(maxHeight, elementSize.Height);
            maxWidth = Math.Max(maxWidth, elementSize.Width);

            if (y + elementSize.Height > clientRect.Bottom && y != clientRect.Y)
            {
                y = clientRect.Y;
                x += maxWidth + this.ItemSpacing;
                maxWidth = elementSize.Width;
            }

            if (x == clientRect.X &&
                this.Grouped &&
                (this.owner.Owner.Groups.Count > 0) &&
                !this.owner.Owner.FullRowSelect)
            {
                x += this.owner.Owner.GroupIndent;
            }

            RectangleF arrangeRect = new RectangleF(new PointF(x, y), elementSize);
            if (this.RightToLeft)
            {
                arrangeRect = LayoutUtils.RTLTranslateNonRelative(arrangeRect, clientRect);
            }

            element.Arrange(arrangeRect);
            y += elementSize.Height + this.ItemSpacing;
        }

        return finalSize;
    }
}
Completed
Last Updated: 29 Oct 2013 08:48 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Sr.
Comments: 0
Category:
Type: Bug Report
0
To reproduce:
-add a RadListView with size (480, 333);
-add about 30 items;
-use the following code:
public Form1()
{
    InitializeComponent();

    radListView1.ViewType = ListViewType.IconsView;
    radListView1.ListViewElement.ViewElement.Orientation = Orientation.Horizontal;

    radListView1.AllowArbitraryItemWidth = false;
    radListView1.AllowArbitraryItemHeight = false;
    radListView1.ItemSpacing = 0;
    radListView1.ItemSize = new Size(100, 30);
}

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

    protected override RadListViewElement CreateListViewElement()
    {
        return new MyBaseListViewElement();
    }
}

public class MyBaseListViewElement : RadListViewElement
{
    protected override BaseListViewElement CreateViewElement()
    {
        return new MyIconListViewElement(this);
    }
}

public class MyIconListViewElement : IconListViewElement
{
    public MyIconListViewElement(RadListViewElement owner) : base(owner)
    {
    }

    protected override void HandleDownKey(KeyEventArgs e)
    {
        base.HandleRightKey(e);
    }

    protected override void HandleUpKey(KeyEventArgs e)
    {
        base.HandleLeftKey(e);
    }

    protected override void HandleLeftKey(KeyEventArgs e)
    {
        base.HandleUpKey(e);
    }

    protected override void HandleRightKey(KeyEventArgs e)
    {
        base.HandleDownKey(e);
    }
}

Navigating via Left/Right arrow keys does not work properly each time.
Completed
Last Updated: 29 Oct 2013 06:22 by ADMIN
To reproduce:
-add RadListView and populate it with several items;
-use the following code:
radListView1.ViewType = Telerik.WinControls.UI.ListViewType.IconsView; radListView1.ListViewElement.ViewElement.Orientation = Orientation.Horizontal; 

When you are navigating through items using the arrow keys, Left/Right moves Up/Down, and Up/Down moves Left/Right.

Workaround:use custom list view

public class MyListView : RadListView
{
    protected override RadListViewElement CreateListViewElement()
    {
        return new MyBaseListViewElement();
    }
}

public class MyBaseListViewElement : RadListViewElement
{
    protected override BaseListViewElement CreateViewElement()
    {
        return new MyIconListViewElement(this);
    }
}

public class MyIconListViewElement : IconListViewElement
{
    public MyIconListViewElement(RadListViewElement owner) : base(owner)
    {
    }

    protected override void HandleDownKey(KeyEventArgs e)
    {
        base.HandleRightKey(e);
    }

    protected override void HandleUpKey(KeyEventArgs e)
    {
        base.HandleLeftKey(e);
    }

    protected override void HandleLeftKey(KeyEventArgs e)
    {
        base.HandleUpKey(e);
    }

    protected override void HandleRightKey(KeyEventArgs e)
    {
        base.HandleDownKey(e);                
    }
}