Telerik RadGrid排序客户端JavaScript jQuery

时间:2016-05-05 08:58:44

标签: javascript jquery asp.net telerik telerik-grid

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

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

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

在客户端RadGridCommand事件中,我取消默认命令以防止回发/ 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();

非常感谢任何建议

1 个答案:

答案 0 :(得分:0)

我使用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();
   }}