1

検索フォームを送信した後に見つかった検索結果に基づいて特定のタブを選択する方法が atk 4.2 にあるかどうか疑問に思っています。

それぞれ独自のタブの下で多数の GRID を更新する単純な検索フォーム (ユーザーが指定したキーワードまたは基準を検索する) がある場合。
これらの GRID は、ユーザーがフォームを送信した後に更新されます。これについては、次の記事を参照してください:グリッドまたはリスターを更新する検索フォームの実装

グリッドに検索結果がない場合、「レコードが見つかりません」と表示され、ユーザーが少し混乱します。検索結果のあるグリッドをユーザーに自動的に表示する方がよいでしょう...

結果のあるグリッドで最初のタブを選択し、空の検索結果を返したグリッドのタブを非表示にすることが考えられますが、これは可能ですか?

ありがとう

4

2 に答える 2

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を拡張することも、自分で1行のJSを使用することもできます。

于 2012-10-04T22:09:27.577 に答える
0

はい、可能だと思いますが、イベント トリガーでは検索条件を通過するのが難しい場合があります。

  1. ページ「my/search」を作成します
  2. 検索フォームを追加$form=..
  3. タブを追加する$tabs=..
  4. フォームが送信されたら、タブをリロードする必要があります。

    if($form->isSubmitted()){ $q=$form->get('検索'); $tabs->js()->reload(array('q'=>$q))->execute(); }

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

メッセージを表示するためだけに結果が見つからない場合は、チェックして少なくとも 1 つのタブを追加する必要がある場合があります。タブ内でカウントを使用することもでき、非常に便利です。

于 2012-09-04T00:44:04.370 に答える