user905481
user905481

Reputation:

sorting datagrid in silverlight using Observable Collection

I have an observable collection which is binded to datagrid... I want to sort the datagrid by clicking on header. It's a dynamic data. Here is my code

namespace SLSortObservableCollection
{
    public partial class MainPage : UserControl
    {
        //ObservableCollection<int> NumData = new ObservableCollection<int>();
       // ObservableCollection<string> StrData = new ObservableCollection<string>();

    public MainPage()
    {
        InitializeComponent();

       ObservableCollection<int> NumData = new ObservableCollection<int>();
    ObservableCollection<string> StrData = new ObservableCollection<string>();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        Random ra = new Random();
        for (int i = 0; i < 10; i++)
        {
            int num = ra.Next(1000);
            NumData.Add(num);

        }
        try
        {

            dataGrid1.ItemsSource = null;
            dataGrid1.ItemsSource = NumData;
        }
        catch (Exception ex) { MessageBox.Show(ex.ToString()); }
    }

    private void button2_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            StringBuilder builder = new StringBuilder();
            Random random = new Random();
            char ch;
            for (int i = 0; i < 5; i++)
            {
                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
                builder.Append(ch);
                StrData.Add(builder.ToString());
            }

            dataGrid1.ItemsSource = StrData;
        }
        catch (Exception ex) { MessageBox.Show(ex.ToString()); }
    }

}  

}

Upvotes: 0

Views: 840

Answers (1)

HugoRune
HugoRune

Reputation: 13799

ObservableCollection does not support sorting at all. If this was not silverlight, you might be able to do something with CollectionView.

As it is, you will probably have to use a custom extension of SortableCollection. There are several of these flying around, just search for "sortable observableCollection"

Some implementations to get you started

http://kiwigis.blogspot.de/2010/03/how-to-sort-obversablecollection.html

http://elegantcode.com/2009/05/14/write-a-sortable-observablecollection-for-wpf/

http://sortablecollection.codeplex.com/

Upvotes: 1

Related Questions