Bu nedenle, bir kez dinamik olarak php tarafından oluşturulan bu veri tabanına sahibim. Ama bir kez yüklendiğinde, tüm tabloyu yeniden yüklemek istemiyorum çünkü yaptığım bir açıklamada sadece küçük bir javascript var. Düğmeye bastığınızda, tr sayfamdaki bir veri özelliğini karşılaştırırım. Eğer uymuyorsa, onları saklamak istiyorum, onlara göstermek isterim. İşte bu yüzden şimdiye kadar denedim.Datatable bir düğme tıklatma olayına göre satırları gizle ve göster
<div style="margin: 30px 0;">
<button class="btn btn-primary" id="myClientButton">Voir mes clients seulements</button>
</div>
<table id="advancedSearchTable">
<thead>
<tr>
<th>Name</th>
<th>Phone</th>
<th>Email</th>
<th>Subject</th>
<th>Date</th>
<th>Profile</th>
</tr>
</thead>
<tbody>
{% for entity in entities %}
<tr data-user="{{ entity.user.id }}" class="values">
<td>{{ entity }}</td>
<td>{{ entity.mainphone }}</td>
<td>{{ entity.email }}</td>
<td>{{ entity.tagline }}</td>
<td>{{ entity.createdDate|date('d-m-Y') }}</td>
<td><a href="{{ path('clients_show', {id: entity.id}) }}" class="btn btn-success"><span class="glyphicon glyphicon-eye-open"></span></a></td>
</tr>
{% endfor %}
</tbody>
</table>
Döngü Symfony'de 2 yapılır HTML (bunu anlamak yoksa, Twig Şablon Kullanarak gerçekten önemi yok) anlaman gereken tek şey olduğunu "verilere nitelik -user "PHP tarafından oluşturuldu ve veritabanımın her girişi bu döngüde gidiyor.
Sonra jQuery bu var:
<script>
$('#advancedSearchTable').DataTable(
{
"language": {
"url": "//cdn.datatables.net/plug- ins/9dcbecd42ad/i18n/French.json"
},
responsive: true
});
$('#myClientButton').on('click', function(){
if ($(this).hasClass('active')){
$(this).removeClass('active');
$('tr.values').show();
}
else{
$(this).addClass('active');
$('tr.values').each(function(){
if ($(this).attr('data-user') != 5){
$(this).hide();
}
});
}
});
</script>
Çok iyi çalışıyor. Tek sorun, DataTable'ın "kendisini değiştirmesi" değil. Örneğin, 25 sayfa varsa, 25 sayfa tutar ve "sonraki tablo sayfası" düğmesine bastığınızda, "tablo sayfası" nı yeniler ve artık şeyler gizlenmez. Çok arandım ama bir yol bulamadım. Bunun için ajax kullanmak istemiyorum, çünkü sadece bir kez değer ile doldurulmalı ve daha sonra aktif olana veya düğmenin etkin olmamasına bağlı olarak gizlenmeli veya gösterilmeli ... Bu jQuery kullanılarak bile mümkün mü? Eklenti ?
Şimdiden teşekkürler.
Sana istemci tarafı elemanlarını sakladığını çünkü bu olduğunu düşünüyorum ve ne zaman sayfa size neyi hiçbir bilgiye sahip yeni bir veri kümesi alan Datatable daha önce gizlenmiş. Etkin olarak, istemci tarafı filtreleme ile sunucu tarafı verilerini kullanmaya çalışıyorsunuz. – markpsmith
Hayır İstemci tarafı gizlemek için kullanıyorum. Açıkça çalışmıyor çünkü gizlediğim veriler veri tablosunda hesaplanmıyor. Örneğin, satırın yarısını gizlerim ancak yine de "150 öğenin 20'sini gösterir" diyor (örneğin) ... Coud Veri tablosunu yeniliyor muyum? –
Veritabanını yeniliyorsanız, temel veriler değişmediğinden satırlarınız tekrar gösterilecektir. – markpsmith