現在のページは:Top < ColdFusion < コードサンプル集 Index < ColdFusion(タブ)

ColdFusion(タブ)

cflayout タグcflayoutarea タグを使用して、タブメニューを作成する事ができます。

コードと動き



【メインページ】
必要なCSSプロパティを設定します。 (タブ内で使用するCSS含む)

<style type="text/css">
#tabArea {
  width:350px;    /* 横幅 */
  text-align:left;/* テキスト配置 */
}
#tab_regist,#tab_list {
  padding:20px;   /* 余白指定 */
}
#tab_list ul {    /* マーカーを画像に変更 */
  list-style-type:none;
  list-style-image:url(/img/coldfusion/flower_07.gif);
}
</style>

cflayout タグcflayoutarea タグを使用して、レイアウト領域を作成します。

<cfajaximport tags="cfform">
<!--- タブ --->
<center>
<cflayout name="tabArea" type="tab" tabHeight="200">
  <!--- 新規登録タブ --->
  <cflayoutarea name="tab_regist" title="新規登録"
    source="sample_tab1.cfm" refreshOnActivate="true">
  </cflayoutarea>
  <!--- 花の名リストタブ --->
  <cflayoutarea name="tab_list" title="花の名リスト"
    source="sample_tab2.cfm" refreshOnActivate="true">  
  </cflayoutarea>
</cflayout>
</center>


メインページのcflayoutarea タグsource 属性で指定したページを作成します。
ここでは、【新規登録タブ】と【花の名リスト タブ】を作成します。

【新規登録タブ】
サンプルでは、登録フォームの表示と、「登録する」ボタンをクリックした時のDB登録処理を指定しています。ここでは、フォーム表示部分を紹介します。

<cfform action="" method="post">
  好きな花の名前
  <cfinput id="name" name="name" type="text" />
  <br /><br />
  <center>
  <cfinput id="submit" name="submit"
    type="submit" value="登録する" />
  </center>
</cfform>


【花の名リスト タブ】
サンプルでは、登録済みの花の名リストの表示と、アイコンをクリックした時のDB削除処理を指定しています。ここでは、花の名リスト表示部分を紹介します。
リンク先を現在のタブ内に表示させる場合には、AjaxLink 関数を使用します。

<ul>
<cfoutput query="request.select">
  <li>
     #name# 
    <a href=
      "#AjaxLink('#cgi.SCRIPT_NAME#?del_id=#id#'#)">
    <img src="../img/coldfusion/cancel.gif" /></a>
  </li>
  </cfoutput>
</ul>

説明

タブメニューを作成する場合、cflayout タグcflayoutarea タグを使用します。

cflayout タグでは、子の cflayoutarea 領域の外観と配置を制御します。
パラメータには以下の属性が指定できます。

type(必須) レイアウトのタイプ
タブメニューを作成する場合はtabを指定します。
(border(ボーダー付き),hbox(水平方向),vbox(垂直方向)も指定可)
align 子レイアウト領域のコンテンツに適用するデフォルトの配置
(それぞれの cflayoutarea タグの align 属性が優先)
・center
・justify
・left
・right
name レイアウト領域の名前(ページ内で一意)
style レイアウトのスタイルを定義する CSS スタイル
tabHeight すべての子レイアウト領域のコンテンツ領域に適用する高さ
(それぞれの cflayoutarea タグの style 属性の高さ設定で上書き可能)
tabPosition タブ領域のコンテンツを基準としたタブの相対的な位置
bottom: タブをレイアウトの下部に表示
top(デフォルト): タブをレイアウトの上部に表示

cflayoutarea タグは常に cflayout タグの子にする必要があります。
パラメータには以下の属性が指定できます。

align レイアウト領域内の子コントロールの配置
(デフォルト:cflayout タグの align 属性の値)
・center
・justify
・left
・right
closable 領域を閉じることが可能かどうかを指定するブール値
true:タブに x アイコンを表示
  ユーザーは、このアイコンをクリックして領域を閉じることが可能
false(デフォルト):タブに x のアイコンは非表示
disabled タブを無効にするかどうかを指定するブール値(デフォルト:false)
無効なタブはグレーで表示されます
※selected 属性の値が true の場合は無視されます
initHide 初期状態で領域を非表示にするかどうかを指定するブール値(デフォルト:false)
初期状態で非表示になっている領域を表示するには、ColdFusion.Layout.showArea または ColdFusion.Layout.showTab 関数を使用します
name レイアウト領域の名前
onBindError バインド式の評価でエラーが発生した場合に実行する JavaScript 関数の名前
この関数は 2 つの属性 (HTTP ステータスコードとメッセージ) を取る必要があります。
この属性を省略し、(ColdFusion.setGlobalErrorHandler 関数を使用して) グローバルエラーハンドラを指定すると、エラーメッセージが表示されます。それ以外の場合は、デフォルトのエラーポップアップが表示されます。
overflow 子コンテンツのサイズが大きいためにコントロールがウィンドウの境界を超えてしまう場合に、子コンテンツをどのように表示するかを指定します
auto(デフォルト): 必要に応じてスクロールバーを表示
hidden: 境界からはみ出したコンテンツにアクセスできないようにする
scroll: 必要がない場合でも常に水平および垂直方向のスクロールバーを表示
visible: レイアウト領域の外側にコンテンツを表示(Internet Explorerでは、コンテンツサイズに合わせてレイアウト領域を拡張)
refreshOnActivate タブ表示領域が表示される(たとえば、ユーザーがタブを選択する) たびに、タブのコンテンツを更新するかどうかのブール値
フォーム送信などバインドイベントが発生した時は、この属性の値に関係なく、必ずタブのコンテンツを更新します。
true: タブ表示領域が表示される時にも更新
false(デフォルト): タブ表示領域が表示される時には更新しない
※この属性を使用する場合、source 属性の指定が必要
selected このタブを最初から選択された状態にして、そのコンテンツをレイアウト内に表示するかどうかを指定するブール値
(デフォルト:最初のタブが選択された状態)
source レイアウト領域のコンテンツを返す URL
この属性では依存関係を持つバインド式を使用できます。
この属性を使用すると、コンテンツの取得中にアニメーションのアイコンと「ロード中...」というテキストが表示されます。
この属性で指定したファイルに AJAX 機能を使用するタグ (cfform、cfgrid、cfpod など) が含まれている場合は、cflayoutarea を含むページで cfajaximport タグを使用する必要があります。(このサンプルではメインページで使用しています)
style 領域の外観を制御する CSS スタイル指定
title タブに表示されるテキスト

レイアウト領域のコンテンツを指定するには、source 属性またはタグ本文を使用します。両方とも指定されている場合は、source 属性で指定されたコンテンツが使用され、タグ本文は無視されます。


以下のルールにより、さまざまなレイアウトを複雑に組み合わせることが可能になります。

  1. cflayoutarea タグの直下の子としてcflayoutarea タグを含めることはできません。
  2. cflayoutarea タグの直下の子としてcflayout タグを含めることができます。
    ・ただし、cflayout タグの直下の子としてcflayoutarea タグを含めることはできません。
    cflayout タグの子として cfloop タグcfquery タグを使用し、その本文に cflayoutarea タグを含めることができます。
  3. tab タイプのレイアウトの中に border タイプのレイアウトを配置することはできません。


次の JavaScript 関数を使用すると、レイアウト領域の有効化、無効化、表示、非表示、展開、折り畳み、選択などが可能になります。

ColdFusion.Layout.createTab 既存のタブ付きレイアウトにタブを作成します
ColdFusion.Layout.disableTab 特定のタブを無効にして選択できないようにします
ColdFusion.Layout.enableTab 特定のタブを有効にし、ユーザーがそのタブを選択して領域のコンテンツを表示できるようにします
ColdFusion.Layout.hideTab タブを非表示にします
ColdFusion.Layout.selectTab タブを選択して、レイアウト領域のコンテンツを表示します
ColdFusion.Layout.showTab inithide 属性または hideTab() 関数によって非表示にされたタブを表示します


AjaxLink 関数を使用すると、リンク先が現在の Ajax コンテナに表示されます。
パラメータには以下の属性が指定できます。

URL リンク先のURL

この関数で指定されたリンクがブラウザでクリックされると、HTTP レスポンスによって現在のページが置き換えられるのではなく、cfdiv、cflayoutarea、cfpod、または cfwindow コントロールにリンク先の URL が渡されます。
上記のコントロール内にある a タグの href 属性の URL がこの関数で指定されている場合にのみ効果を持ちます。 そうでない場合、リンクは通常どおりに機能します。


注意メモ

  1. cflayoutarea タグsource 属性で指定したページにエラーがあると、タブが正常に表示されない場合があります。表示されない場合は、エラーがないか確認してください。

(Hoshino 2008/10/27)

店舗経営の皆様へ | 企業学校経営の皆様へ | 開発会社をお探しの方へ
ホーム | 事業案内 | 制作実績 | Webアプリ開発(ColdFusion) | 会社案内 |  お問合せ | サイトマップ