- ユーザーコントロールを変更するたびに GeneXus.exe /install を実行する必要がありますか?
- 実行時のコンテナ名 (div id) の取得方法は?
- コンテナコントロールへの参照の取得方法は?
- ユーザーコントロールをロードした後の、(実行時の) ユーザー コントロール インスタンスへの参照の取得方法は?
- ユーザーコントロールのロードが初めてか、ポストバックかを確認する方法は?
- オンロードイベントへの関数のサブスクライブ方法は?
- ユーザーコントロールを変更するたびに GeneXus.exe /install を実行する必要がありますか?
いいえ、GeneXus.exe/install は UC の構造を変更する場合 (プロパティまたはイベントを変更する場合) のみ実行します。
一方、Javascript レンダリングファイルを変更するだけで、コントロールのバージョン (.control ファイルの <Version>0</Version>) は更新しない場合は、モデルの Web フォルダにある「<ユーザーコントロール名>.<バージョン>.VER」というファイルを削除し、ユーザーコントロールを使用するオブジェクトを生成することで、ユーザーコントロールのファイルが、関連するフォルダ (例: \web\<ユーザーコントロール名>) にコピーされます。
- 実行時のコンテナ名 (div id) の取得方法は?
実行時にコンテナ名を取得するには、コントロールの適用範囲内で this.ContainerName を使用します。例: var name = this.ContainerName;
- コンテナコントロールへの参照の取得方法は?
コンテナコントロールへの参照を取得するには、コントロールの適用範囲内で this.getContainerControl() を使用します。例: var name = this.getContainerControl();
- ユーザーコントロールをロードした後の、(実行時の) ユーザー コントロール インスタンスへの参照の取得方法は?
多くの場合、ユーザーコントロールは次のような html を生成する必要があります: <a href="www.genexus.com" onclick="someFunction(z)">text</a>。このような場合、グローバル関数ではなくユーザーコントロールの関数にオンクリックイベントを実行させます (同じ Web ページ内に複数のインスタンスがあると問題となるため)。ユーザーコントロールの適用範囲内で this.me() 関数を次のとおり使用する必要があります:
<a href="'+ this.MenuData [ i ] .MenuURL + '" onclick="' + this.me() + '.JSDolphinItemClicked(\'' + this.ControlName + '\',' + i +');" title="' + this.MenuData [ i ] .MenuDescription + '"> + this.MenuData [ i ] .MenuTitle + '</a>
上記の例は Dolphin Style Menu ユーザーコントロールのものです。こちらからダウンロードできます。
- ユーザーコントロールのロードが初めてか、または再掲示かを検知する方法は?
this.IsPostback を使用して、コントロールのロードが初めてかどうかを検知します。例:
this.show = function()
{
if (!this.IsPostBack)
{
// draw control
}
}
- オンロードイベントへの関数のサブスクライブ方法は?
オンロードイベントにユーザーコントロール関数をサブスクライブする場合、次の方法を使用することをお勧めします:
gx.evt.on_ready( window,<myFunction>);
ここで、myFunction はオンロードイベントにサブスクライブする関数です。この関数を使用すると、異なる JavaScript フレームワーク (jquery、dojo、scriptaculous) を使用した場合に発生する可能性のある互換性の問題を回避します。
|