2017-06-05 2 views
0

Ich benutze MVC mit Datables.js, um die Daten anzuzeigen. Es funktioniert gut, mein Problem ist beim Klicken auf die Zeile Ich gebe die EmployeeID an verschiedene EmployeeWorkDetails Action weiter und dies besteht aus einer anderen EmployeeWorkDetails Ansicht.DataTables Bindung mit MVC in mehreren Ansicht

Jetzt muss ich EmployeeWorkDetails in Datatables in anderer Ansicht binden, wie kann ich das erreichen?

Übersicht

<table id="EmployeeTable" style="display:none"> 
    <thead> 
     <tr> 
      <th>Select</th> 
      <th>EmployeeID</th> 
      <th>EmployeeName</th> 

</table> 

function LoadData() { 
    $.ajax({ 
     "url": "@Url.Action("Home", "EmployeeList")", 
     method: 'post', 
     dataType: 'json', 
     success: function (data) { 
      $('#EmployeeTable').DataTable(
      { 
       data: data,select: true, 
       columns: [ 
        // using anchor tag 
        { "data": "EmployeeID", "render": function (data) { 
         return '<a class="btn btn-primary" href="/Home/EmployeeWorkDetails/' + data + '"></a>';}, "autoWidth": true,}, 
        { "data": "EmployeeID", "autoWidth": true,}, 
        { "data": "EmployeeName", "autoWidth": true, visible: false },}, 
       ] 
      ,});}}) } 

-Controller

public class HomeController : Controller 
{ 
    public ActionResult index(int id) 
    { 
     return View(); 
    } 
    [HttpGet] 
    public JsonResult EmployeeList() 
    { 
     var data = EmployeeList.GetEmployeeData(); 
     return Json(data, JsonRequestBehavior.AllowGet); 
    } 

    [HttpGet] 
    public ActionResult EmployeeWorkDetails(int id) 
    { 
     var workDetails= emp.EmployeeWorkDetails(int id) 
     return View(workDetails); 
    } 
} 
    This is View of EmployeeWorkDetails 
    @model IEnumerable<WorkEmployee.Models.workDetails> 
     // Is it possible to pass workDetails in datatables Data 
    $(document).ready(function() { 
     oTable = $('#EmployeTable').DataTable(
       { 
        searching: true, 
        ordering: true, 
        select: true, 
        data: @workDetails, 
        columns: [ 
          { "data": "EmployeeId", "autoWidth": true, }, 
          { "data": "EmployeeName", "autoWidth": true, }, 
        ], 
       }); 
    }); 
+0

können Sie mir bitte mitteilen, ob die Antwort hilft? – kblau

+0

Vielen Dank für Ihre Hilfe, ich denke, ich muss EmployeeworkDetails in View binden und wie Datatables verwendet werden, um die gesamte Liste return von var workDetails = emp.EmployeeWorkDetails (int ID) return View (workDetails); –

Antwort

0

Dies ist, wie Sie die Mitarbeiter-ID an die Steuerung übergeben:

Controller:

//Create an edmx to your table 
public class HomeController : Controller 
{ 
    [HttpGet] 
    public ActionResult EmployeeWorkDetails(int id) 
    { 
     //var workDetails= emp.EmployeeWorkDetails(int id) 

     //put a breakpoint here to see id passed 

     return View("Index2001"); 
    } 


    public ActionResult Index2001() 
    { 
     IList<EmployeeList> empList; 
     using (BreazEntities24 entity = new BreazEntities24()) 
     { 
      empList = entity.EmployeeLists.ToList(); 
     } 
     return View(empList); 
    } 

Ausblick:

@model IEnumerable<Testy20161006.Models.EmployeeList> 
@using Testy20161006.Models 
@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Index2001</title> 
    <script src="~/Scripts/jquery-1.12.4.min.js"></script> 
    <link href="~/Content/DataTables/css/jquery.dataTables.min.css" rel="stylesheet" /> 

    <script src="~/Scripts/DataTables/jquery.dataTables.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $("#EmployeeTable").DataTable({ 
       "order": [[1, "desc"]], 
       "pagingType": "full", 
       "deferRender": true, 
       "columns": [ 
       { 
        "data": "EmployeeID", "render": function (data, type, row) { 
         return '<a class="btn btn-primary" href="/Home/EmployeeWorkDetails/' + data + '">click</a>' 
        }, "autoWidth": true, 
       }, 
       { "data": "EmployeeID", "autoWidth": true, }, 
       { "data": "EmployeeName", "autoWidth": true, visible: true } 
       ] 
      }); 
     }) 
    </script> 
</head> 
<body> 
    <div> 
     <table id="EmployeeTable" class="display table table-striped table-bordered"> 
      <thead> 
       <tr> 
        <th>Select</th> 
        <th>EmployeeID</th> 
        <th>EmployeeName</th> 
      </thead> 
      <tbody> 
       @foreach (EmployeeList emp in Model) 
       { 
        <tr> 
         <td>@emp.EmployeeID</td> 
         <td>@emp.EmployeeID</td> 
         <td>@emp.EmployeeName</td> 
        </tr> 
       } 
      </tbody> 

     </table> 
    </div> 
</body> 
</html> 
+0

Danke für Ihre Zeit –

+0

Ich habe den Code aktualisieren, ich muss workDetails Daten in Datatables binden –