0

내 프로젝트 중 하나에서 MVC.JQuery.DataTables 버전 1.5.36을 사용하고 있습니다. Ajax 옵션을 사용하여 서버 측에서 데이터를 쿼리합니다. 나는 버전 1.3에서 업데이트 한 후MVC.JQuery.DataTables - 정렬 작업이 없습니다.

function CreateMyTasksDataTable(elementId, url, data) { 
    if (tasksTable != null) { 
     tasksTable.destroy(); 
    } 
    tasksTable = $('#' + elementId).DataTable({ 
     "language": { 
      "url": "/scripts/locales/DataTable/@(Model.DatatableLanguageCode).json" 
     }, 
     dom: '<"html5buttons"B>lTfgitp', 
     buttons: [ 
      { extend: 'copy' }, 
      { extend: 'csv' }, 
      { extend: 'excel', title: '@Strings.MyTasks' }, 
      { extend: 'pdf', title: '@Strings.MyTasks' }, 
      { 
       extend: 'print', 
       customize: function (win) { 
        $(win.document.body).addClass('white-bg'); 
        $(win.document.body).css('font-size', '10px'); 

        $(win.document.body).find('table') 
          .addClass('compact') 
          .css('font-size', 'inherit'); 
       } 
      } 
     ], 
     autoWidth: false, 
     pageLength: 50, 
     responsive: true, 
     ajax: { url: url, type: "POST", data: data }, 
     serverSide: true, 
     searching: false, 
     stateSave: true, 
     columns: [ 
         { data: "Title" }, 
         { data: "Id" }, 
         { data: "ListTitle" }, 
         { data: "DueDateString" }, 
         //{ 
         // data: { 
         //  _: "DueDateString", 
         //  sort: "DueDateFileTimeUTC" 
         // } 
         //}, 
         { data: "Status" }, 
         { data: "Effort" }, 
         { data: "WorkUnits" }, 
         { data: "TotalWork" }, 
         { data: "Id" } 
     ], 


     columnDefs: [ 
       { 
       render: function (data, type, row) { 
         var rowHtml = "<button class='ladda-button btn btn-sm btn-primary btn-3-3 btn-edit' data-style='slide-up' onclick='LoadEditTaskWindow(\"" + row.Id + "\", \"" + row.ListId + "\");'><i class='fa fa-pencil' style='margin-right:5px;'></i> @Strings.ButtonEdit</button>"; 
         return rowHtml; 
        }, 
        targets: 8 
       }, 
       { 
        render: function (data, type, row) { 
         var rowHtml = '<a href="@Url.Action("Tasks", "TaskBoard")?listId=' + row.ListId + '">' + row.ListTitle + '</a>'; 
         return rowHtml; 
        }, 
        targets: 1 
       }, 
       { 
        render: function (data, type, row) { 
         var rowHtml = ''; 
         if (row.IsNew) { 
          rowHtml = rowHtml + " <span class='label label-success'>@Strings.New</span>"; 
         } 

         if (row.Stuck) { 
          rowHtml = rowHtml + " <span class='label label-warning'>@Strings.OnHold</span>"; 
         } 

         if (row.IsOverdue) { 
          rowHtml = rowHtml + " <span class='label label-danger'>@Strings.OverDue</span>"; 
         } 

         return rowHtml; 
        }, 
        targets: 2 
       } 
     ] 
    }); 
    $('#' + elementId).on('draw.dt', function() { 
     stop_laddaButtons(); 
     init_laddaButtons(); 
    }); 
} 

:

 public async Task<ActionResult> GetAllMyTasksTable(DataTablesParam dataTableParam, DateRangeQueryOption queryParameters) 
    { 
     var currentUser = await UserService.CurrentUser(); 
     var timezoneOffsetMinutes = UserSettings.UTCOffsetMinutes; 
     var tasks = TaskBoardService.GetAllMyTasks(currentUser, queryParameters, timezoneOffsetMinutes).OrderBy(t => t.DueDate).ThenBy(t => t.ListTitle); 
     return DataTablesResult.Create(tasks.Select(t => new SPTaskViewModel(t.Id, t.Title) 
     { 
      ListTitle = t.ListTitle, 
      DueDateString = t.DueDateString, 
      Status = t.Status, 
      Effort = t.Effort, 
      WorkUnits = t.WorkUnits, 
      TotalWork = t.TotalWork 
     }).AsQueryable().Cast<SPTaskViewModel>(), dataTableParam, new ResponseOptions<SPTaskViewModel>() { ArrayOutputType = ArrayOutputType.ArrayOfObjects }); 
    } 

자바 스크립트에서 클라이언트 측의 데이터 테이블의 구성은 이것이다 : 데이터를 검색 할 수

컨트롤러 액션은 다음과 같다. xx, 정렬 작업이 중지되었습니다.

내 데이터/구성에 문제가 있는지, 정렬 작업이 중단되었는지 알 수 없습니다.

누구나 비슷한 문제가 있었고 해결책을 찾았습니까?

내가 자바 스크립트 객체

enter image description here 에서 볼 그리고이 enter image description here

+0

안녕하세요, 저는 Mvc.JQuery.DataTables .NET 코드를 작성했습니다. 당신이 습득하려고하는 것에 대해 조금 혼란 스럽습니다. 서버 측 정렬 만 시도합니까? 즉 클라이언트가 제어하지 못합니까? – mcintyre321

+0

안녕하세요, 클라이언트 측 정렬을 수행하고 싶습니다. 내 프로젝트에서 버전 1.3.56에서 1.5.36으로 업데이트했습니다. 업데이트 후에 클라이언트 측 정렬이 더 이상 작동하지 않았습니다. 나는 다시 작동 시키려고 많은 일을 시도했지만 어떤 이유인지 찾을 수 없었습니다. 왜 정렬 작업이 멈췄습니다. 내가 다시 다운 그레이드 한 후 이전처럼 작동했습니다. 테이블의 열 머리글을 클릭하면 1.5.36을 사용하여 아무 일도 일어나지 않습니다. 이상한 점은 서버 측이 클라이언트 측과 어떤 관계가 있는지입니다 ... 문제를 재현 할 수 있습니까, 아니면 그냥 내 프로젝트에서 일어날 수 있습니까? –

+0

Fiddler를 사용하여 게시 된 데이터를 캡처 할 수 있습니까? 필터 옵션이 올바르게 전달되는지 확인하십시오. – mcintyre321

답변

1

내가 모델 바인더가 등록되지 않을 수 있습니다 생각하는 컨트롤러에서 닷넷 개체입니다 무엇 -이 추가 시도 :

시작 코드
if (!ModelBinders.Binders.ContainsKey(typeof (DataTablesParam))) 
       ModelBinders.Binders.Add(typeof (DataTablesParam), new DataTablesModelBinder()); 

(예에서의 Global.asax/위해 Application_Start)

+0

많은 감사. 이것은 그 것이었다 :-) –