我想知道在atk 4.2中是否有办法选择基于的特定标签 提交搜索表单后找到的搜索结果。
如果有一个简单的搜索表单(搜索用户给出的关键字或标准) 在其自己的选项卡下更新多个GRID 用户提交表单后,这些GRID会更新,如下所述:Implementing a search form that updates grid or lister
现在当网格没有搜索结果时,它会显示“找不到记录”,这对用户来说有点混乱,最好自动向用户显示一个确实有搜索结果的网格......
这个想法是选择带有结果的网格的第一个标签,并且可能隐藏返回空搜索结果的网格的标签,这可能吗?
感谢
答案 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)
是的,我认为这是可能的,但是在事件触发时可能很难通过搜索条件。
$form=..
$tabs=..
提交表单时,您需要重新加载标签:
如果($形式 - > isSubmitted()){ $ Q = $形式 - >获得( '搜索'); $ tabs-> JS() - >重新加载(阵列( 'Q'=> $ Q)) - >执行(); }
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);
}
如果没有找到仅显示消息的结果,您可能需要检查并添加至少一个选项卡。你也可以使用标签内的计数,非常方便。