2016-12-26 8 views
0

私はMVCとJquery Dataテーブルを使用しています。 jquery datatable paramと一緒にクラスとして自分のパラメータを渡したいだけです。ここ は、私が使用しているコードですが、それは、jqueryカスタムオブジェクトパラメータ付きデータテーブル

index.js

var options = {}; 
options.bProcessing = true; 
options.bServerSide = true; 
options.sAjaxSource = urlContent + 'Employee/GetAll'; 
options.bPaginate = true; 
options.sPaginationType = "full_numbers"; 
options.iDisplayLength = 10; 
options.bAutoWidth = true; 
options.aoColumns = cols; 
options.fnServerData = function (sSource, aoData, fnCallback) { 
    $.ajax({ 
     "dataType": 'json', 
     "type": "GET", 
     "url": sSource, 
     "data": aoData, 
     "success": function (data) { }, 
     "failure": function (data) { } 
    }); 
}; 

options.fnServerParams = function (aoData) { 

    aoData.push({ "name": "employeeModel", "value": { Name : "testing", Age:25} }); 
}; 

    var table = $('#' + tableId).DataTable(options); 

とMUコントローラ

public JsonResult GetReportData(JQueryDataTableParamViewModel param, EmployeeViewModel employeeModel) 
{ 
    return new List<Employee>(); //// Loads from Database 
} 

employeeModelは常にnullである、ある作業されていません。私は間違っていた。私を助けてください。

答えて

0

私は、パラメータとしてオプションを取るコンストラクタを使用してそれを行っていないが、私は他の方法でそれを行うために使用される、ここではそのためのコードは次のとおりです。

$('#assets-data-table').DataTable({ 
        "serverSide": true, 
        "processing": true, 
        "ajax": { 
         "url": "@Url.Action("Get","Asset")", 
         "data": function (data) { 

          data.FacilitySite = $("#FacilitySite").val(); 
          data.Building = $("#Building").val(); 
          data.Manufacturer = $("#Manufacturer").val(); 
          data.Status = $("#Status").val(); 
         } 
        }, 
        "columns": [ 
         { "title": "Bar Code", "data": "BarCode", "searchable": true }, 
         { "title": "Manufacturer", "data": "Manufacturer", "searchable": true }, 
         { "title": "Model", "data": "ModelNumber", "searchable": true }, 
         { "title": "Building", "data": "Building", "searchable": true }, 
         { "title": "Room No", "data": "RoomNo" }, 
         { "title": "Quantity", "data": "Quantity" }, 
         { 
          "title": "Actions", 
          "data": "AssetID", 
          "searchable": false, 
          "sortable": false, 
          "render": function (data, type, full, meta) { 
           return '<a href="@Url.Action("Edit","Asset")?id=' + data + '" class="editAsset">Edit</a> | <a href="@Url.Action("Details","Asset")?id=' + data + '">Details</a> | <a href="@Url.Action("Delete","Asset")?id=' + data + '">Delete</a>'; 
          } 
         } 
        ], 
        "lengthMenu": [[10, 25, 50, 100], [10, 25, 50, 100]], 
        initComplete: function() { 
         var input = $('.dataTables_filter input').unbind(), 
          self = this.api(), 
          $searchButton = $('<button>') 
             .text('search') 
             .addClass("btn btn-default") 
             .css("margin-left", "10px") 
             .click(function() { 
              self.search(input.val()).draw(); 
             }) 

         $('.dataTables_filter').append($searchButton); 
        }, 
        "createdRow": function (row, data, index) { 
         if (data["Building"] == null) 
          return; 
         switch (data["Building"].toLowerCase()) { 
          case 'west': 
           $('td:not(:last-child)', row).css({ 
            'background': 'red', 
            'color': 'white' 
           }); 
           break; 
         } 
        } 
       }); 

我々はAJAXでカスタムparametsを指定しています呼んでいる:

public ActionResult Get([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel, AdvancedSearchViewModel searchViewModel) 
{ 


} 

"data": function (data) { 

          data.FacilitySite = $("#FacilitySite").val(); 
          data.Building = $("#Building").val(); 
          data.Manufacturer = $("#Manufacturer").val(); 
          data.Status = $("#Status").val(); 
         } 

アクションのように見えます

関連する問題