Hi
I'd like to get an example of sorting multiple columns in a grid using C#.
Thanks
Kathy
Hi Kathy,
Sure, i'd be happy to help.
Assuming you're using an IGGridViewDataSourceHelper, you just need to create IGGridViewSortedColumn objects and assign them to your IGGridViewDataSourceHelper. like this:
dsh.SortedColumns.AddObjects(new NSObject[]{new IGGridViewSortedColumn ("firstName", IGGridViewSortedColumnDirection.IGGridViewSortedColumnDirectionAscending), new IGGridViewSortedColumn ("lastName", IGGridViewSortedColumnDirection.IGGridViewSortedColumnDirectionAscending)});
In the code above, all i'm doing is creating 2 new sorted column objects. The first is my firstName property and the second is my lastName property. The order you assign to the SortedColumns collection determines the order the sort is applied. So in this case firstName is sorted first and then lastName is a sub sort applied to objects that have the same firstName.
You can read more about this feature here:
http://help.infragistics.com/iOS/2013.2/?page=IGGridView_Sorting_Columns.html
And, if you're interested in learning how sorting in objective-c actually works, I wrote a blog on it not long ago.
http://es.infragistics.com/community/blogs/stevez/archive/2013/10/16/ios-objective-c-sorting-an-array.aspx
Hope this helps,
-SteveZ
Hi Steve,
I am not using the data source helper (I did see the information you are referring to in the documentation). Can you let me know how to add the sorted columns to a weakdatasource?
WeakDataSource is just a property on the IGGridView.
So you'll just create your IGGridViewDataSourceHelper. Add your IGGridViewSortedColumn objects to the SortedColumns property on that datasource helper. And then set your IGGridView's WeakDataSource property to the instance of your dataSourceHelper.
_gridView = new IGGridView();
.... // Setup GridView
this.View.AddSubView(_gridView);
_dsh = new IGGridViewDataSourceHelper();
... // Setup Data
_dsh.SortedColumns.Add(// Add your SortedColumns objects like i previously demonstrated)
_dsh.Data = yourDataArray;
_gridView.WeakDataSource = _dsh;
I am not using the DataSourceHelper, I am using a custom IGGridViewDataSource.
Ah Sorry, i misread.
If you're not using a DataSourceHelper, then you're providing the data to the gridView manually. So all you have to do is sort the data yourself.
Basically, every cell that you create, you're controlling what data is presented. I'm assuming you're using an array in your custom DataSource. So just sort the array and use that to populate the grid.
Out of curiosity, is there a particular reason you're not using a DataSourceHelper?
Hi Steve
I don't recall at this point why I chose to not use the DataSourceHelper. Does it have any limitations as compared to overriding the IGGridViewDataSource? I think I was under the impression that the DataSourceHelper was not as customizable, but if that's not the case then perhaps I should try using a DataSourceHelper instead..
Hey Kathy,
The DataSourceHelpers are basically what they sound like. They're just helper classes that implement the IGGridViewDataSource protocol. Or in the MonoTouch world, they derive from the IGGridViewDataSource class.
That means that you can do anything with them, that you could do when you implement the DataSource yourself. The benefit is that it does a lot of work for you, so that you don't have to build everything yourself.
i.e. it handles sorting via the SortedColumnDefinitions.
Thanks very much. I have a little time right now to try changing way I have and it may work out in the long run so I can implement filtering and sorting.