2016-05-02 9 views
8

के साथ CGIDView फ़िल्टरिंग मुझे कस्टम टेक्स्ट-फ़ील्ड के साथ CGridView फ़िल्टर करने की आवश्यकता है। मेरे पास कस्टम डेटाप्रोवाइडर (CSqlDataProvider) है जो मैं वापस लौटाता हूं और तालिका को भरता हूं। टेबल ठीक है, लेकिन मुझे लगता है कि दर्द मुझे क्या फ़िल्टर कर रहा है। मैंने पहले ही इसे समझने की कोशिश करने में कुछ घंटे बिताए और समर्थन खराब है। मैंने देखा कि CGIDView को अपडेट करने के लिए उपयोग की जाने वाली कुछ jQuery विधि है, और यह 'डेटा' पैरामीटर लेता है, जिसका मूल्य मुझे प्रारूपित करने के बारे में नहीं पता है। यहां मैंने अपनी फाइल बनाने में बनाया है जहां मुझे इस चीज़ की आवश्यकता है।कस्टम टेक्स्टफील्ड

पीएचपी:

<?php 
Yii::app()->clientScript->registerScript('search', " 
$('.search-form form').submit(function(){ 
    $.fn.yiiGridView.update('studentiSaSmjeraData', { 
     data: $(this).serialize(), -----------> this should be changed to get data from my text input using GET I guess, but I dont know the format 
    }); 
    return false; 
    }); 
"); 
?> 

HTML और पीएचपी पर विचार खोज प्रपत्र:

<div class="search-form"> 
     <p> 
      Pretraga po broju indeksa: 
     </p> 
     <?php $form=$this->beginWidget('CActiveForm', array(
      'action'=>Yii::app()->createUrl($this->route), 
      'method'=>'get', 
     )); ?> 
     <div class="row"> 
      Broj indeksa: <input type="text" class="br_ind" name="br_ind" id="br_ind" value=""></input> 
     </div> 
     <div class="row buttons"> 
      <?php echo CHtml::submitButton('Search'); ?> 
     </div> 
     <?php $this->endWidget(); ?> 
</div> 

dataProvider में स्तंभ के साथ मैं 'br_ind' कहा जाता है इस पाठ की तुलना करना चाहते।

संपादित करें: इनपुट क्षेत्र नाम की तरह लगता है और आईडी भी इस के साथ कुछ करने के लिए (वे कुछ विशिष्ट प्रारूप में होना चाहिए) है। मेरी समस्या यह है कि डेटा किसी विशिष्ट मॉडल से नहीं है। यह एक टेबल उत्पाद और दो तालिकाओं पर कुछ अतिरिक्त बाधाओं से प्राप्त होता है, इसलिए मेरे पास फ़िल्टर या कुछ भी उपयोग करने के लिए विशेष मॉडल नहीं है जिसमें वाईआई में (afaik) समर्थन है। लेकिन जो मैं चाहता हूं वह सरल लगता है, फिर भी मेरे लिए दुःस्वप्न में बदल गया। फ़ंक्शन के पैरामीटर के बारे में प्रलेखन इतना खराब है। उम्मीद है कि कोई मदद कर सकता है। कोई भी इसमें घुस गया और इसे हल नहीं कर सका?

+0

आप कोड जो अपने gridview उत्पन्न जोड़ने कृपया कर सकते हैं? – Asped

+0

क्या आप इस तरह कुछ ढूंढ रहे हैं? http://yiiplayground.com/index.php?r=UiModule/dataview/grid देखें यदि ऐसा है तो यह देशी मानक CGridView सुविधाओं के साथ आसानी से हो सकता है। मुझे बताएं कि मैं जवाब में अधिक विस्तार से स्पष्टीकरण के साथ आऊंगा। –

+0

कृपया अपना cgridview कोड जोड़ें और यदि संभव हो तो कृपया स्क्रीनशॉट संलग्न करें ताकि हम आपके प्रश्न को बेहतर ढंग से समझ सकें। –

उत्तर

0

$.fn.yiiGridView.update() दृश्यों के पीछे jQuery के ajax फ़ंक्शन का उपयोग कर रहा है (यदि ग्रिड के लिए AJAX अद्यतन सक्षम है)। आप details on the data parameter के लिए jQuery दस्तावेज़ों और अन्य विकल्पों को देख सकते हैं जिन्हें .ajax() पर भेजा जा सकता है।

$(this).serialize() का प्रयोग के रूप में आप वर्तमान में jQuery सर्वर (फिर से करने के लिए GET अनुरोध करने के लिए एक क्वेरी स्ट्रिंग पैरामीटर के रूप में br_ind=whatever_the_value_is जोड़ने बनाना चाहिए कर रहे हैं, आप प्राप्त उपयोग कर रहे हैं यह सोचते हैं, पोस्ट या किसी अन्य क्रिया नहीं बल्कि उपयोग करने के लिए एक कारण नहीं दिख रहा है प्रश्न में उपलब्ध पर्याप्त जानकारी)। अनुरोध किए गए यूआरएल और प्रतिक्रिया सामग्री को सत्यापित करने के लिए अपने ब्राउज़र के डेवलपर टूल का उपयोग करें।

फिर यह बात है कि सर्वर अनुरोध को ठीक से संसाधित कर रहा है या नहीं। आपने कोई विवरण नहीं दिया है इसलिए मैं आपको वहां बहुत मदद नहीं कर सकता।

0

इस, तो आप सिर्फ $ _GET [गतिविधि] प्राप्त करने के लिए एक नमूना

$.fn.yiiGridView.update('activity-grid', { 
     data: 'Activity[Type]='+tp+'&Activity[idAgent]='+agent+'&Activity[StartTime]='+start+'&Activity[EndTime]='+end 
    }); 
इस उदाहरण में

, सर्वर साइड में है

+0

क्या आपने मेरे उत्तर @Luka Bulatovic का प्रयास किया है? – tinybyte

संबंधित मुद्दे