2012-10-01 65 views
0

情況: 我創建了一種嚮導,底部有一個CGridView。每次用戶在嚮導中選擇一些內容時,網格都將通過其搜索功能進行「過濾」(不含AJAX)。我將所有用戶的前面步驟的「答案」保存在隱藏字段中,以便我可以在嚮導中的每一步中再次使用它們進行過濾。Yii CgridView:排序或過濾刪除我的「自定義」過濾器

問題: 當我進行排序或cgridview(默認篩選器字段和排序冠軍)直接進行篩選,他不使用我的隱藏字段值了。我可能有點失落(我對YII btw很新)。我怎麼能給默認過濾器和排序請求的隱藏域的值,所以他們將被用在搜索功能?我可以看到我需要添加PARAMS例如像人[名]的要求,但我不知道怎麼...

+0

你加入,是他們又在表單中MODELNAME [AttributeName會]隱藏字段? Yii對於那些使用它們的組件非常嚴格。如果你指定一些更多的信息(代碼等),可能是最好的,你給這裏的人很少繼續。 – Blizz

+0

謝謝, 我不想讓這個問題具體(這就是爲什麼我沒有代碼),因爲我認爲它是一個共同的問題。 想象一下,我的cgridview上方有我自己的窗體(不是窗口小部件)。用戶可以在我的自定義表單中填寫一些字段。用戶對CGridView進行過濾或排序(使用默認按鈕和字段)時,排序或篩選器操作也需要使用我的自定義窗體的值。 其實我想製作高級搜索表單,但這是一個複雜的代碼來理解:)。 希望這更有意義... – Wannes

回答

0

這裏是我的4個半美分....

我看到這個工作的唯一方法是通過非AJAX提交過程在某處存儲您的「嚮導」值(我在想$ _SESSION,但不知道這是否可行),可以通過model-> search ()函數在所有過濾/搜索實例中調用,並將其添加到搜索條件中。

很明顯,以下內容對你沒有幫助,但可能會解釋我在類似情況下所做的更多。默認情況下,我想限制某些用戶類型的大型表格的視圖,但限制並不像僅顯示單個用戶標識的條目那樣簡單。只要用戶過濾他們有權訪問所有底層數據的數據,

我最終做的是檢測他們是否在我用來限制數據的任何列上進行篩選,如果應用了用戶提交的篩選器,或者在同一列上應用我自己的限制篩選器(如果他們沒有) 。所以,我想申請這對我會檢測是否此默認限制應提出申請,或不適合用戶一起做這樣的事的模型 - >搜索()函數中的每一列:

if(isset($this->A_DB_Column_Name) && in_array($this->A_DB_Column_Name,array(default limitation))) { 
    $criteria->compare('A_DB_Column_Name',$this->A_DB_Column_Name,false); 
} else { 
    $criteria->compare('A_DB_Column_Name',array(default limitation),false); 
} 
1

您可以通過改變jquery.yiigridview.js

例如inputSelector變量,通過改變它像加入filterClass下面您可以定義輸入字段作爲gridview內部字段解決這個(巫默認值是過濾器)到您的輸入字段

inputSelector = '.' + settings.filterClass + ' input, ' + '.' + settings.filterClass + ' select'; 

編輯:Yii中1.1.13 filterSelector屬性已被添加到CGridView,沒有工作