Grid sorting


Person column:
Dish column:

GridDemo/SortingContent.cshtml
@model AweCoreDemo.ViewModels.Input.GridDemoSortingCfgInput

@(Html.Awe().Grid("SortingGrid")
.Columns(
new Column{Bind = "Id", Width = 75},
new Column{Bind = "Person", Sortable = Model.PersonSortable, SortRank = Model.PersonRank, Sort = Model.PersonSort},
new Column{Bind = "Dish.Name", Sortable = Model.DishSortable, SortRank = Model.DishRank, Sort = Model.DishSort},
new Column{Bind = "Date", Width = 150}, new Column{Bind = "Price", Width = 80, ClientFormat = ".(Price)£"},
new Column{Bind = "Location"})
.Height(350)
.SingleColumnSort(Model.SingleColumnSort)
.Sortable(Model.Sortable)
.Url(Url.Action("GetItems","LunchGrid")))
Awesome/Grid/LunchGridController.cs
public class LunchGridController : Controller
{
public IActionResult GetItems(GridParams g, int? country, string person, string dish)
{
var query = Db.Lunches.AsQueryable();

var gmb = new GridModelBuilder<Lunch>(query.AsQueryable(), g);

gmb.KeyProp = o => o.Id;

// for when using parent controls filters
gmb.FilterContainsStr(o => o.Person, person)
.FilterContainsStr(o => o.Dish.Name, dish)
.FilterEq(o => o.Country.Id, country);

// props used in site.imgDish js function
gmb.Prop(o => o.Dish.Pic, "DishPic");
gmb.Prop(o => o.Dish.Name, "DishName");

// used by some demos (GridFrozenColumns)`
gmb.Prop(o => o.Organic, render: o => o ? "Yes" : "No");

return this.AweJson(gmb.Build());
}
}

Sorting can be enabled or disabled for the whole grid by using the .Sortable(bool) and can be set for each column by setting the Column.Sortable

  • SingleColumnSort - enables sorting by one column at a time
  • Column.Sort - initial sorting for this column (None | Asc | Desc)
  • Column.SortRank - initial sort rank for this column



Comments