2012-09-03 41 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

相关问题