तो मेरे पास यह डेटाटेबल है जो एक बार गतिशील रूप से PHP द्वारा उत्पन्न होता है। लेकिन एक बार यह लोड होने के बाद, मैं पूरी तालिका को फिर से लोड नहीं करना चाहता क्योंकि चूंकि मैं जो कथन कर रहा हूं, वहां केवल एक छोटा जावास्क्रिप्ट है। जब आप बटन दबाते हैं, तो मैं अपने tr पर मौजूद डेटा विशेषता की तुलना करता हूं। अगर यह फिट नहीं होता है, तो मैं उन्हें छिपाना चाहता हूं, अन्यथा, मैं उन्हें दिखाना चाहता हूं। तो यहां मैंने अभी तक कोशिश की है।बटन पर क्लिक करने योग्य डेटा छुपाएं और शो पर क्लिक करें
एचटीएमएल
<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>
लूप Symfony 2 में किया जाता है (, टहनी टेम्पलेट का उपयोग कर यदि आप इसे समझ में नहीं आता यह वास्तव में नहीं बात करता है) आप सभी को समझना होगा यह है कि "डेटा पर विशेषता -user "PHP द्वारा बनाया गया है और यह कि मेरे डेटाबेस की हर प्रविष्टि इस लूप में जा रही है।
फिर, jQuery में मैं इस है:
<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>
यह बहुत अच्छी तरह काम करता है। एकमात्र समस्या यह है कि डेटाटेबल तब "खुद को बदलना" नहीं है। इसलिए, उदाहरण के लिए, यदि इसमें 25 पेज हैं, तो यह 25 पृष्ठों को रखता है और जब आप "अगला टेबल पेज" बटन दबाते हैं, तो यह "टेबल पेज" को रीफ्रेश करता है और चीजें अब छिपी नहीं जाती हैं। मैंने बहुत खोज की लेकिन मुझे कोई रास्ता नहीं मिला। मैं वास्तव में इसके लिए AJAX का उपयोग नहीं करना चाहता, क्योंकि इसे केवल मूल्य के साथ भरने की आवश्यकता है और फिर इसे केवल सक्रिय होने के बटन को छिपाने या दिखाने के लिए ही होगा ... क्या यह jQuery का उपयोग करना भी संभव है लगाना ?
अग्रिम धन्यवाद।
मुझे लगता है कि इस वजह से आप क्लाइंट-साइड तत्वों छुपा रहे हैं, और जब आप पृष्ठ datatable यह जो तुम क्या का ज्ञान नहीं होता डेटा का एक नया सेट को पुन: प्राप्त पहले छिपा हुआ है। प्रभावी रूप से आप क्लाइंट-साइड फ़िल्टरिंग के साथ सर्वर-साइड डेटा का उपयोग करने का प्रयास कर रहे हैं। – markpsmith
नहीं, मैं छिपाने के लिए क्लाइंट-साइड का उपयोग कर रहा हूं। यह स्पष्ट रूप से काम नहीं करता है क्योंकि मेरे द्वारा छुपाए गए डेटा की गणना डेटा तालिका में नहीं की जाती है। उदाहरण के लिए, मैं पंक्ति का आधा छिपाता हूं लेकिन यह अभी भी "150 वस्तुओं में से 20 दिखा रहा है" (उदाहरण के लिए) ... क्या मैं डेटा तालिका रीफ्रेश करता हूं? –
यदि आप डेटाटेबल रीफ्रेश करते हैं, तो आपकी पंक्तियां फिर से दिखाई देंगी क्योंकि अंतर्निहित डेटा नहीं बदला है। – markpsmith