在AX系统的标准环境中,Grid的每个列头(Column Header)都可以点击,用户可以通过点击Column Header来实现针对该字段的排序。但在某些情形下,我们不希望Grid提供这样的功能。比如,查询日志记录,查询订单排期时,就希望默认以时间作为排序字段,而不允许用户单击Column Header来重新排序。
为了去掉这个标准功能,需要在Grid的相应Column控件上重写Sort方法,凡是禁止点击排序的栏位都要写一次下述代码:
public int sort(SortOrder _sortDirection)
{
return false;
}
或者
public int sort(SortOrder _sortDirection)
{
return 0;
}
那如何给Grid指定按哪个字段排序呢?在DataSource.executeQuery()方法中,于super()前面写代码即可实现动态排序,举例如下:
public void executeQuery()
{
this.query().dataSourceTable(tableNum(Enqtable)).sortClear();
this.query().dataSourceTable(tableNum(Enqtable)).addSortField(fieldNum(EnqTable,TransDate),sortorder::Descending);
super();
}