1

ASP.net Sys.Applicationのメソッド「$find」から返せる要素のメソッドを呼び出したいです。この場合、これはテレリック RadWindow コントロール (ID="MyWindow") であり、.show() メソッドを呼び出したいと考えています。

ID は ASP.net フレームワークで変更されるため、別の JS ファイルでコントロールの正しいクライアント ID を取得することが問題です。このために私は現在使用しています

$find($("[ID$=MyWindow]")[0].id).show();

これは、id が「MyWindow」で終わる要素がページに 1 つしかない場合に機能します。残念ながら、コントロールは、ID が「MyWindow」で終わる奇妙なラッパー要素をページに追加することがあります。

だから私の質問: $find と jquery の選択のこの醜い組み合わせ以外に、別の JS ファイルでASP.net 要素オブジェクトを取得するより良い方法はありますか?

4

3 に答える 3

2

私が考えることができるのは、またはのClientIDModeいずれかに使用するpreditableことだけですstatic

ここに例があります。

それでも、ID の衝突には注意が必要です。

<telerik:RadWindowID="RadWindow1" runat="server" ClientIDMode="Static" ...>
</telerik:RadWindow>

// Separate JS File
function showForm(url) {
   var oWnd = $find("RadWindow1");
   oWnd.setUrl(url);
   oWnd.show();
}

または別のアプローチは RadWindowsManager を使用することです

RadWindowManagerRadWindowJavaScript から ID 経由で呼び出すことができます。

<telerik:RadWindowManager ID="RadWindowManager1" runat="server" ...>
   <Windows>
     <telerik:RadWindow ID="RadWindow1" runat="server">
     </telerik:RadWindow>
   </Windows>
</telerik:RadWindowManager>

// Separate JS File
function showForm(url) {
   window.radopen(url, "RadWindow1");
   return false;
}
于 2013-07-17T16:20:06.670 に答える
0

もう 1 つの方法は、ASPX ファイル内のコントロールのすべての名前を持つオブジェクトを作成し、JS ファイルからアクセスすることです。

ASPX ファイル:

<telerik:RadWindowManager ID="RadWindowManager1" runat="server" ...>
   <Windows>
     <telerik:RadWindow ID="RadWindow1" runat="server">
     </telerik:RadWindow>
   </Windows>
</telerik:RadWindowManager>



<script type="text/javascript">
         var MyControls = {
                MyRadWindow: '<%= RadWindow1.ClientID %>'
         };
</script>

JS ファイル:

$find(MyControls.MyRadWindow).show();
于 2013-10-15T09:27:30.573 に答える