提交搜索表单后突出显示/选择特定选项卡

时间:2012-09-03 15:19:31

标签: atk4

我想知道在atk 4.2中是否有办法选择基于的特定标签 提交搜索表单后找到的搜索结果。

如果有一个简单的搜索表单(搜索用户给出的关键字或标准) 在其自己的选项卡下更新多个GRID 用户提交表单后,这些GRID会更新,如下所述:Implementing a search form that updates grid or lister

现在当网格没有搜索结果时,它会显示“找不到记录”,这对用户来说有点混乱,最好自动向用户显示一个确实有搜索结果的网格......

这个想法是选择带有结果的网格的第一个标签,并且可能隐藏返回空搜索结果的网格的标签,这可能吗?

感谢

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

是的,我认为这是可能的,但是在事件触发时可能很难通过搜索条件。

  1. 创建一个页面'my / search'
  2. 添加搜索表单$form=..
  3. 添加标签$tabs=..
  4. 提交表单时,您需要重新加载标签:

    如果($形式 - > isSubmitted()){     $ Q = $形式 - >获得( '搜索');     $ tabs-> JS() - >重新加载(阵列( 'Q'=> $ Q)) - >执行(); }

  5. 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);
    }
    

    如果没有找到仅显示消息的结果,您可能需要检查并添加至少一个选项卡。你也可以使用标签内的计数,非常方便。