Ho una tabella di dipendenti che prelevo utilizzando chiamata $.load
ajax inviando indietro un partialview
come di seguito:dettagli nascosti possibilità di DataTable quando viene caricato attraverso il modello MVC
Classe Modello
public class EmployeeDetails
{
public string FirstName{get;set;}
public string LastName{get;set;}
public string AccountStatus{get; set;}
public string LastLogin{get;set;}
public string EmailAddress{get;set;}
public string Contact {get;set;}
public string Gender {get;set;}
}
Metodo PartialViewResult nel controller
public PartialViewResult GetEmployeeDetails()
{
List<EmployeeDetails> model=new List<EmployeeDetails>();
using(var context=new ContextConnection())
{
var employees=(from e in context.tbl_employees select e).ToList();
foreach(var employee in employees) //Fill the model
{
model.add(new EmployeeDetails(){
FirstName=employee.fname,
LastName=employee.lname,
AccountStatus=employee.acc_status,
LastLogin=employee.last_login,
EmailAddress=employee.email,
Contact=employee.contact,
Gender=employee.gender
});
}
}
return PartialView("_EmployeeDetails",model) //passing model back
}
_EmployeeDetails Vedi
@model IEnumerable<ProjectName.Models.EmployeeDetails>
<table id="employee" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th></th>
<th>Full Name</th>
<th>Account Status</th>
<th>Last Login</th>
<th>Email Address</th>
</tr>
</thead>
<tbody>
@foreach(var emp in Model)
{
<tr>
<td></td>
<td>@emp.FirstName + " " + @emp.LastName</td>
<td>@emp.AccountStatus</td>
<td>@emp.LastLogin</td>
<td>@emp.EmailAddress</td>
</tr>
}
</tbody>
</table>
Da this link sono stato in grado di raggiungere l'UI
qualunque dato nel link
var table; //global variable
$('.loadEmployee').on('click',function(){
$("#loadBody").load("/Admin/GetEmployeeDetails",function(){
table=$("#employee").dataTable({
"columns": [
{
"className": 'details-control',
"orderable": false,
"data": null,
"defaultContent": ''
},
{ "data": "Full Name" },
{ "data": "Account Status" },
{ "data": "Last Login" },
{ "data": "Email Address" }
],
"order": [[1, 'asc']]
});
}
})
function format (d) {
// `d` is the original data object for the row
return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
'<tr>'+
'<td>Full name:</td>'+
'<td>'+d["Full Name"]+'</td>'+ //this is fine
'</tr>'+
'<tr>'+
'<td>Extension number:</td>'+
'<td>'+d["Contact Details"]+'</td>'+ //Need to get Contact here
'</tr>'+
'<tr>'+
'<td>Gender:</td>'+
'<td>d["Gender"]</td>'+ //Need to get Gender here
'</tr>'+
'</table>';
}
// Add event listener for opening and closing details
$('#employee tbody').on('click', 'td.details-control', function() {
var tr = $(this).closest('tr');
var row = table.row(tr);
if (row.child.isShown()) {
// This row is already open - close it
row.child.hide();
tr.removeClass('shown');
}
else {
// Open this row
row.child(format(row.data())).show();
tr.addClass('shown');
}
});
La mia domanda è:
Ho modello pieno di tutti i dati, ma come visualizzare i dati in più, che è nel modello (Contact), (di genere) in
format
funzione
La demo data nel link qui sopra usa .txt
file da estrarre dati ma da nessuna parte viene menzionato come farlo con i dati model
in base al mio scenario precedente. Il collegamento +
e i collegamenti -
funzionano correttamente, tranne che i valori del modello per Contact
e Gender
non vengono visualizzati. Uno scenario che sto pensando è aggiungere tutti questi come td
s in foreach
e nasconderli in modo da poter ottenere i valori della colonna come sto ottenendo ora per i dati visualizzati. Ma questo sarebbe pesante quando c'è una quantità enorme di colonne da visualizzare. Qualsiasi idea/luce su questo è molto apprezzata.
Si potrebbe aggiungi i valori come attributi 'data- *', forse all'elemento '
Oh si !! Dai!! Che stupida mi è mancata questa parte .. :) Per favore pubblica questo come risposta @StephenMuecke e io lo accetterò .. :) ma un altro dubbio qui .. Se hai visto quel link ottengono i dati da qualche file 'txt' e loro legare ma ancora 'data' che non sono visualizzati sono stati recuperati da' row.data() '? Come funziona? qualche idea..:) –
Non usare il plug-in dataTable quindi non sono sicuro, ma avrò un po 'più tardi e vedrò cosa posso scoprire –
risposta
Un'opzione consisterebbe nell'aggiungere i valori "extra" come attributi
data-*
nella riga della tabella.e poi estrarli nei pulsanti cliccare evento e trasmettere quei valori alla funzione
format()
e quindi modificare la funzione
format()
per accettare i parametri aggiuntivifonte
2015-08-25 04:55:22
amico fantastico !! Grazie mille.. :) –
Problemi correlati