最近のアクセス:
HistoryManager ユーザーコントロール

HistoryManager ユーザーコントロールは、URL の変更をリッスンします。変更が発生するたびに、URLChanged イベントをトリガーします。監視対象の URL の変更内容は、# (ハッシュ) の後に示されます。

コントロールの使用

HistoryManager ユーザーコントロールは Work With パターン (TabbedView Web コンポーネント) で広く使用されているコントロールであり、ユーザータブの選択内容に基づいて、ディープリンクを維持したまま GeneXus オブジェクトを動的にロードします。つまり、ブラウザーの戻るまたは進むオプションの状態を維持したまま、リンクをコピーして渡し、別のユーザーがまったく同じページにアクセスできるようにします。

メソッド

URLChanged: URL の変更を通知します。

次のような Web パネルの定義があるとします。
イメージ:22725.gif
Tabs テキストブロックが、3 つのタブ (Start イベント、Init サブルーチン、および DummyTabs サブルーチン) のリストをロードする役割を果たします。
Event Start
  Do 'Init'
  Do 'DummyTabs'
EndEvent

Sub 'DummyTabs'
&Tabs = new()
for &i = 1 to 3 //タブは 3 つ
  &Tab = new()
  &Tab.Code = &i.toString().Trim()
  &Tab.Description = &i.ToString().Trim()
  &Tabs.Add(&Tab)
endfor
  &LastTab = &Tabs.Count
EndSub

Sub 'Init'
&TabTemplate = !'<li class="%1">'
&TabTemplate +=  !'<a id="%2Tab" %3%7 class="%4">'
&TabTemplate +=    !'<span class="%5">'
&TabTemplate +=      !'<span class="TabBackground">'
&TabTemplate +=        !'<span class="TabText">%6</span>'
&TabTemplate +=      !'</span>'
&TabTemplate +=    !'</span>'
&TabTemplate +=  !'</a>'
&TabTemplate +=!'</li>'
EndSub
ユーザーがタブをクリックするたびに、HistoryManager は変更を通知するための URLChanged メソッドをトリガーします。目的のコンテンツを表示するコンポーネントやタブストリップ (タブのリスト) を更新して、選択内容を反映する必要があります (Draw Tabs サブルーチン)。
Event HistoryManager1.URLChanged
msg(format(!"URLChanged, Hash %2 Url %1",HistoryManager1.URL,HistoryManager1.Hash))
Do 'Draw Tabs'
&URLChangedEvent = True // 再表示コードの確認
EndEvent

Event Refresh
If not &URLChangedEvent
  Do 'Draw Tabs'
EndIf
EndEvent

Sub 'Draw Tabs'
Do 'FindTabIndex'

&IsFirstTab = True
&TabsMarkup = ""
For &Index = 1 To 3
  &Tab = &Tabs.Item(&Index)
  Do 'LoadItem'
  &IsFirstTab = False
Endfor
Tabs.Caption = Format(!'<ul class="Tabs">%1</ul>', &TabsMarkup)
EndSub

Sub 'FindTabIndex'
//指定したコードがあるタブを検索// 見つからない、またはコードが空の場合、最初のタブに戻る&Found = False
For &Index = 1 to &Tabs.Count
  If (HistoryManager1.Hash = "" And (&Tabs.Item(&Index).Code = &TabCode)) Or (&Tabs.Item(&Index).Code = HistoryManager1.Hash)
   &SelectedTab = &Index
   &Found = True
   Exit
  EndIf
EndFor

If (not &Found and &Tabs.Count > 0)
  &SelectedTab = 1
EndIf
EndSub

Sub 'LoadItem'
&TabLeftCls = !"TabLeft"
if &Index = &FirstTab
  &TabLeftCls = !"TabFirst"
EndIf

&TabRightCls = !"TabRight"
If &Index = &LastTab
  &TabRightCls = !"TabLast"
EndIf

If &Index = &SelectedTab
  &TabsMarkup += Format(&TabTemplate, !"Tab TabSelected", &Tab.Code, "", &TabLeftCls, &TabRightCls, &Tab.Description, "")
Else
  //この項目を HistoryManager のエントリーポイントとして追加し、ブラウザーが前後のページに移動できるようにする   &OnClickTemplate = !' onclick="return HistoryManager.AddHistoryPoint(' + !"'%1'" + !')"'   &TabsMarkup += Format(&TabTemplate, !"Tab", &Tab.Code, Format(!'href="%1"', &Tab.Link), &TabLeftCls, &TabRightCls, &Tab.Description, Format(&OnClickTemplate, &Tab.Code))
EndIf
EndSub
実行時には、3 つのタブが作成されます:
イメージ:22726.gif
各タブをクリックすると、&Tab.Code の値 (#1、#2、#3) でハッシュタグが更新されます。







サブページ
Created: 15/01/07 22:48 by Admin Last update: 21/10/28 23:29 by Admin
カテゴリ
Powered by GXwiki 3.0