2012-09-03 87 views
1

我想知道是否有方法可以在4.2中選擇基於 的特定選項卡提交搜索表單後發現的搜索結果。提交搜索表單後突出顯示/選擇特定選項卡

如果有一個簡單的搜索表單(搜索用戶給出的關鍵字或標準) ,它會更新各自在其自己的選項卡下的多個GRID。在用戶提交表單後,這裏提到
這些網格得到更新,:Implementing a search form that updates grid or lister

現在當電網不具備搜索結果,它說「沒有發現記錄」這是一個有點混淆用戶,它會更好地自動顯示用戶一個網格,確實有搜索結果...

這個想法是選擇第一個選項卡與網格有結果,並可能隱藏選項卡的網格返回空的搜索結果,是這可能嗎?

感謝

回答

2

看看這個 - 也許它對你有用。

/** 
* Set specific tab as selected 
* $id is zero-based index of the tab to be selected or the id selector 
*  of the panel the tab is associated with (the tab's href fragment 
*  identifier, e.g. hash, points to the panel's id). 
*/ 
function setSelect($id){ 
    $this->js(true)->tabs('select',$id); 
} 

你可以用這種新方法擴展/atk4/lib/View/Tabs/jUItabs.php或簡單地用一條線JS自己。

+0

謝謝,那正是我需要的。 – gsteenss

+0

糾正:我相信這個方法不會在ATK4 Tabs類如上所示,更有可能實現爲$ tabs-> setOption('selected',$ id);其中$ id是活動選項卡的從零開始的索引。 你應該檢查Github,並在接下來的幾天看到jUItabs.php。 – DarkSide

+0

再一次更正。現在可以使用以下命令: $ tabs-> setOption('active',$ id);其中$ id是活動選項卡的從零開始的索引。 – DarkSide

0

是的,我認爲這是可能的,但有事件觸發,可能很難通過搜索條件。

  1. 創建頁面 '我/搜索'
  2. 添加搜索表單$form=..
  3. 添加標籤$tabs=..
  4. 當提交表單時,您將需要重新加載標籤:

    如果($ form-> isSubmitted()){0} {0} {0} $ q = $ form-> get('search'); ();}執行(); }

5接下來填充選項卡,但您需要先獲取結果。

$tab1_data = $this->add('Model_Data1'); 
$tab1_data ->addCondition('name','like','%'.$_GET['q'].'%'); 
$tab1_count = $tab1_data->count()->getOne(); 
if($tab1_count){ 
    $tabs->addTab('Data1 ('.$tab1_count.')') 
     ->add('CRUD')->setModel($tab1_data); 
} 

如果沒有找到結果才顯示該消息,則可能需要進行檢查並至少添加一個選項卡。您也可以使用標籤內的計數,非常方便。

+0

嗨,是的......這將是罰款,如果我會使用模型,但爲了靈活性的原因我目前使用GRIDs與setSource()和使用 - > dq->在表單提交後應用你提到的'q'查詢參數。所以我有點侷限於:'$ tabs = $ this-> add('Tabs'); $ conf = $ tabs-> addTab('Conflictos'); $的gconf = $ conf->加( '網格'); $ gconf-> addColumns()if(isset($ _GET [「q」])$ gconf-> dq-> where(something with $ q)'所以我想知道有沒有簡單的方法可以做GRID-> Hide ()或GRID-> Selectme()或類似的東西? – gsteenss

+0

你可以這樣做:'$ q2 = clone $ q; $ q2-> del('fields'); $ q2-> field('count(* )'); $ cnt = $ q2-> getOne();' – romaninsh

+0

好的,謝謝,我會試試... – gsteenss

相關問題