FlexGridコントロールで、次の方法を使用してグリッドのデータをソートすることができます:
以下の画像は、Country列のヘッダをタップし、グリッドに適用されたソート後の FlexGrid を示しています。
C# |
コードのコピー
|
---|---|
grid.AllowSorting = true;
|
XAML |
コードのコピー
|
---|---|
<c1:FlexGrid AllowSorting="True"> |
次の図は、Name列でソートが適用された後の FlexGrid を示しています。
次のコード例は、C# と XAML で FlexGrid コントロールをソートする方法を示します。この例では、「クイックスタート」セクションで作成したサンプルを使用します。
using Xamarin.Forms;
using C1.CollectionView;
using C1.Xamarin.Forms.Grid;
C# |
コードのコピー
|
---|---|
public static FlexGrid GetGrid() { var dataCollection = Customer.GetCustomerList(10); C1CollectionView<Customer> cv = new C1CollectionView<Customer>(dataCollection); var sort = cv.SortDescriptions.FirstOrDefault(sd => sd.SortPath == "Name"); var direction = sort != null ? sort.Direction : SortDirection.Descending; cv.SortAsync(x => x.Name, direction == SortDirection.Ascending ? SortDirection.Descending : SortDirection.Ascending); FlexGrid _grid = new FlexGrid(); _grid.ItemsSource = cv; _grid.VerticalOptions = LayoutOptions.FillAndExpand; return _grid; cv.SortChanged += cv_SortChanged; } static void cv_SortChanged(object sender, EventArgs e) { throw new NotImplementedException(); } |
デフォルトでは、ソートは連結フィールドに適用されます。ただし、別のフィールドを基準にして列をソートすることもできます。それには、SortMemberPath プロパティをグリッドのソート基準にする列に設定するだけです。たとえば、次の列は「FullName」に連結されていますが、「LastName」を基準にしてソートされます。
C# |
コードのコピー
|
---|---|
column.Binding = “FullName”; column.SortMemberPath = “LastName”; |