Telerik RadGrid 排序客户端 JavaScript jQuery

Telerik RadGrid Sorting Client Side JavaScript jQuery

我需要一种使用 javascript 或 jQuery 对 rad 网格进行排序的方法我想避免使用网络服务,因为项目中没有其他地方使用网络服务。

我使用 JavaScript 绑定到网格,不需要 OnNeedDataSource 事件。

<ClientEvents OnRowSelected="RowSelected" OnRowDeselected="RowDeselected" OnCommand="RadGridCommand"/>

在客户端 RadGridCommand 事件上,我取消了默认命令以防止 postback/ajax 请求并检查该命令是否是一个排序事件,此时我想提供一种对我的网格进行排序的方法。

      //RadGrid Command function 
      function RadGridCommand(sender, args) {

          args.set_cancel(true); //cancel the default command to prevent postback/ajax request

          if (args.get_commandName() == "Sort") {
             var sortExpressions = sender.get_masterTableView().get_sortExpressions();

如有任何建议,我们将不胜感激

我使用 JavaScript 排序函数让它工作

 LotResults.sort(function (a, b) {
    return b.LotResult - a.LotResult    //Sort DESC order
 })

我使用命令名检查是否调用了sort命令并取消默认命令以防止回发。

然后我获取 sortExpressions 以获取排序顺序,以确定该顺序是升序还是降序。最后将我的对象绑定到网格以更新视图。

下面是我的做法 它需要我这边做更多的工作才能达到我需要的效果,但它确实有效并且正在对我的网格进行排序:)

//RadGrid Command function 
function RadGridCommand(sender, args) {

 args.set_cancel(true); //cancel the default command to prevent postback/ajax request

 if (args.get_commandName() == "Sort") {
    var sortExpressions = sender.get_masterTableView().get_sortExpressions();
    var sortVal = sortExpressions.toString();

    if (sortVal != "") {

       var fieldName = sortExpressions.getItem(0).get_fieldName();
       var sortOrder = sortExpressions.getItem(0).get_sortOrder();

       if (sortOrder == 1) {
          LotResults.sort(function (a, b) {
                   return b.LotResult - a.LotResult  
          })
        }
        else if (sortOrder == 2) {                    
                LotResults.sort(function (a, b) {
                          return a.LotResult - b.LotResult
                })
        }
   }

   var masterTable = $find("<%= DeactivationLotResultsRadGrid.ClientID %>").get_masterTableView(); 
   masterTable.set_virtualItemCount(LotResults.length);
   masterTable.set_dataSource(LotResults);
   masterTable.dataBind();
   }}