New to Telerik UI for WinForms? Download free 30-day trial

Data Binding

To bind data to RadCarousel:

  • Set the DataSource property.

  • Handle the NewCarouselItemCreating event. In the event handler, create a RadItem descendant instance.

  • Handle the ItemDataBound event. In this event you have access to both the data item and to the RadItem instance.

This same pattern holds true, regardless of the type of data being bound to.

Example

The example below creates a generic list of an object called "Feature". "Feature" has "ID" and "Name" properties. In the NewCarouselItemCreating event handler, RadButtonElement instances are created. In the ItemDataBound event handler, the button text is assigned the "Name" property of the "Feature" object. The "ID" property of the "Feature" object is stored in the RadButtonElement Tag property for later use in the Click event handler.

WinForms RadCarousel Data Binding Example

The Features Object

public class Features
{
    public Features(int id, string name)
    {
        _id = id;
        _name = name;
    }
    private int _id;
    public int ID
    {
        get
        {
            return _id;
        }
        set
        {
            _id = value;
        }
    }
    private string _name;
    public string Name
    {
        get
        {
            return _name;
        }
        set
        {
            _name = value;
        }
    }
}

Public Class Features
    Public Sub New(ByVal id As Integer, ByVal name As String)
        _id = id
        _name = name
    End Sub
    Private _id As Integer
    Public Property ID() As Integer
        Get
            Return _id
        End Get
        Set(ByVal value As Integer)
            _id = value
        End Set
    End Property
    Private _name As String
    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property
End Class

Binding RadCarousel to Generic List

private void CarouselDataBinding_Load(object sender, EventArgs e)
{
    // Describe the carousel path
    CarouselBezierPath path = new CarouselBezierPath();
    path.CtrlPoint1 = new Telerik.WinControls.UI.Point3D(86, 76, 70);
    path.CtrlPoint2 = new Telerik.WinControls.UI.Point3D(10, 20, 0);
    path.FirstPoint = new Telerik.WinControls.UI.Point3D(14, 77, 70);
    path.LastPoint = new Telerik.WinControls.UI.Point3D(90, 20, 0);
    path.ZScale = 500;
    this.radCarousel1.CarouselPath = path;
    radCarousel1.ItemDataBound += new ItemDataBoundEventHandler(radCarousel1_ItemDataBound);
    radCarousel1.NewCarouselItemCreating += new NewCarouselItemCreatingEventHandler(radCarousel1_NewCarouselItemCreating);
    this.Click += new EventHandler(CarouselDataBinding_Click);
    // Create a generic list of Feature objects and bind it
    List<Features> products = new List<Features>();
    products.Add(new Features(1, "Products"));
    products.Add(new Features(2, "Services"));
    products.Add(new Features(3, "Consulting"));
    radCarousel1.DataSource = products;
}
private void radCarousel1_ItemDataBound(object sender, ItemDataBoundEventArgs e)
{
    if (e.DataBoundItem is RadButtonElement)
    {
        // get the RadButtonElement created in the NewCarouselItemCreating event.
        // The RadItem is represented by the e.DataBoundItem property.
        // Assign properties based on bound data - represented by e.DataItem
        RadButtonElement button = (e.DataBoundItem as RadButtonElement);
        button.Text = (e.DataItem as Features).Name;
        button.Tag = (e.DataItem as Features).ID;
        button.Font = new Font("Arial", 20);
        button.Click += new EventHandler(CarouselDataBinding_Click);
    }
}
private void radCarousel1_NewCarouselItemCreating(object sender, NewCarouselItemCreatingEventArgs e)
{
    e.NewCarouselItem = new RadButtonElement();
}
void CarouselDataBinding_Click(object sender, EventArgs e)
{
    MessageBox.Show("You clicked ID " + (sender as RadButtonElement).Tag.ToString());
}

Private Sub CarouselDataBinding_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
    ' Describe the carousel path
    Dim CarouselBezierPath1 As Telerik.WinControls.UI.CarouselBezierPath = New Telerik.WinControls.UI.CarouselBezierPath
    CarouselBezierPath1.CtrlPoint1 = New Telerik.WinControls.UI.Point3D(86, 76, 70)
    CarouselBezierPath1.CtrlPoint2 = New Telerik.WinControls.UI.Point3D(10, 20, 0)
    CarouselBezierPath1.FirstPoint = New Telerik.WinControls.UI.Point3D(14, 77, 70)
    CarouselBezierPath1.LastPoint = New Telerik.WinControls.UI.Point3D(90, 20, 0)
    CarouselBezierPath1.ZScale = 500
    Me.RadCarousel1.CarouselPath = CarouselBezierPath1
    AddHandler RadCarousel1.ItemDataBound, AddressOf radCarousel1_ItemDataBound
    AddHandler RadCarousel1.NewCarouselItemCreating, AddressOf radCarousel1_NewCarouselItemCreating
    AddHandler Me.Click, AddressOf Form1_Click
    ' Create a generic list of Feature objects and bind it
    Dim products As New List(Of Features)()
    products.Add(New Features(1, "Products"))
    products.Add(New Features(2, "Services"))
    products.Add(New Features(3, "Consulting"))
    RadCarousel1.DataSource = products
End Sub
Private Sub radCarousel1_ItemDataBound(ByVal sender As Object, ByVal e As ItemDataBoundEventArgs)
    If TypeOf e.DataBoundItem Is RadButtonElement Then
        ' get the RadButtonElement created in the NewCarouselItemCreating event.
        ' The RadItemis represented by the e.DataBoundItem property.
        ' Assign properties based on bound data - represented by e.DataItem
        Dim button As RadButtonElement = (TryCast(e.DataBoundItem, RadButtonElement))
        button.Text = (TryCast(e.DataItem, Features)).Name
        button.Tag = (TryCast(e.DataItem, Features)).ID
        button.Font = New Font("Arial", 20)
        AddHandler button.Click, AddressOf Form1_Click
    End If
End Sub
Private Sub radCarousel1_NewCarouselItemCreating(ByVal sender As Object, ByVal e As NewCarouselItemCreatingEventArgs)
    e.NewCarouselItem = New RadButtonElement()
End Sub
Sub Form1_Click(ByVal sender As Object, ByVal e As EventArgs)
    MessageBox.Show("You clicked ID " + (TryCast(sender, RadButtonElement)).Tag.ToString())
End Sub

See Also

In this article