Javascript 如何在SAP UI5智能表中实现初始排序

Javascript 如何在SAP UI5智能表中实现初始排序,javascript,sapui5,Javascript,Sapui5,我有一个智能表,里面有一些自定义列。我想首先根据某个字段对表进行排序,如何实现 到目前为止,我已经尝试了以下方法,但没有成功 var oSmartTableBatches = this.getView().byId("sapAffectedBatchesSmartTable2"); oSmartTableAlerts.applyVariant({ sort: { sortItems: [{ columnKey: "

我有一个智能表,里面有一些自定义列。我想首先根据某个字段对表进行排序,如何实现

到目前为止,我已经尝试了以下方法,但没有成功

var oSmartTableBatches = this.getView().byId("sapAffectedBatchesSmartTable2");

    oSmartTableAlerts.applyVariant({
        sort: {
            sortItems: [{
                columnKey: "FieldName",
                operation: "Descending"
            }]
        }
    });
我还尝试用表示变量注释实体集

   <Annotation Term="com.sap.vocabularies.UI.v1.PresentationVariant">
    <Record>

        <PropertyValue Property="SortOrder">
            <Collection>
                <Record>
                    <PropertyValue Property="Property" PropertyPath="FieldName"/>
                    <PropertyValue Property="Descending" Boolean="true"/>
                </Record>
            </Collection>
        </PropertyValue>
    </Record>
</Annotation>

我使用的是ODataV2模型


我还尝试使用beforeRebindTable功能添加一个分拣机,但是它会破坏表格个性化对话框,分组和筛选在表格上不再起作用。

分拣机必须是一组
sap.ui.model.sorter
对象,请参阅。

applyVariant
仅用于在P13N对话框中显示排序列

您使用的注释仅应用于网格表,而不应用于响应表

如果要应用初始排序,则需要具有以下事件处理程序:

//在onInit函数或控制器类级别定义此变量
initView:true,
//智能表事件处理程序
onBeforeRebindTable:函数(oEvent){
var mBindingParams=oEvent.getParameter(“bindingParams”);
如果(this.initView){
//套用
mBindingParams.sorter=[new sap.ui.model.sorter({path:“FieldName”,descending:true})];
//在P13N对话框中缩短已排序列的步骤
var oSmartTable=oEvent.getSource();
oSmartTable.applyVariant({
排序:{
菌落总数:[{
columnKey:“字段名”,
操作:“下降”
}]
}
});
//防止始终应用初始排序
this.initView=false;
}           
},
此代码仅在加载应用程序或用户按下浏览器刷新按钮时对数据进行排序

不要忘记保留行
mBindingParams.sorter=[new sap.ui.model.sorter({path:“FieldName”,descending:true})]
if
条件中,否则每次用户应用排序时都会覆盖它

这种情况也可能发生:

if(mBindingParams.sorter.length==0)

但在这种情况下,用户无法删除排序条件。因此,当他或她在
P13N
对话框中删除所有排序时,不仅在初始化时间,而且在这种情况下,也将应用初始排序顺序

能否显示在“beforeRebind”事件处理程序中添加分类器的代码段?通常情况下,它不会破坏个性化设置,除非您覆盖事件参数中的标准属性。是的,我在BeforeBind表的事件参数中添加了一个分类器。有没有其他方法可以实现这一点?我想没有,但这是最正确的方法,如果您能展示如何准确设置分类器,我可以看到潜在的异常。mBindingParams.sorter=new sap.ui.model.sorter(“propertyName”,true);这就是我尝试添加分拣机的方式。阅读常见问题解答问题#8:我也尝试分配分拣机阵列,但也没有成功。我在odata中看不到任何“orderby”查询。