1

フィールドを含む asp.net フォームがあります。このウィンドウにアクセスすると、javascript 関数は getElementById() メソッドを使用して DOM 経由でフィールドにアクセスでき、サーバーにポストパックすると、クライアントによって行われた更新を受け取ります。

しかし、Telerik の RadWindow コントロールを使用してフォームを子ウィンドウとして起動すると、javascript は子フォームの隠しフィールドにアクセスできません。代わりに null を取得します。

私の質問は次のとおりです。

  1. ウィンドウが親asp.netフォームから起動された場合、子ウィンドウの非表示フィールドにアクセスできませんか?
  2. Telerik コントロールでこれを試みて、問題に遭遇した人はいますか?

編集 クレイグは、IDが異なる可能性があると指摘しました。次に、2 つの追加の質問:

  1. サーバーで割り当てた ID が実際に使用されていることを確認できますか?
  2. getElementByName() を使用することは、DOM 要素にアクセスするためのより良いメカニズムですか?
4

5 に答える 5

1

asp.netコントロールのIDを取得するには、次のようにします。

<%= theControl.ClientID %>

getElementByNameは、getElementByIdほど一般的には使用されません。ID属性はページ上の要素ごとに一意であると想定されていますが、name属性は複製できます。

于 2008-10-14T00:12:12.670 に答える
1

デビッド、コードに同じ問題があったので、この回答を送信します。私が見つけた唯一の本当の解決策は、2か所で「OnClick」機能をサポートする必要があるということでした...私の場合は、 PetersDatePackageですが、TelerikRADストリップにありました。

私の場合、コントロールは.ascxページにあり、JSコードは次のとおりです。

function OnIncidentDateChange(ctrl, dtDate, bErr)
{
    var weekday = new Array(7);
    weekday[0] = "Sunday";
    weekday[1] = "Monday";
    weekday[2] = "Tuesday";
    weekday[3] = "Wednesday";
    weekday[4] = "Thursday";
    weekday[5] = "Friday";
    weekday[6] = "Saturday";

    <%=LabelDayOfWeek.ClientID %>.innerText = weekday[dtDate.getDay()];
}

しかし、これ自体は十分ではありませんでした。このコードを親ページに追加する必要がありました。Telerikストリップのコントロールを保持するページ。

// Dummy function?
function OnIncidentDateChange()
{
}

私がそれをしたら、それはうまくいきました...

理由はわかりませんが、実を言うと、それは私には意味がなく、PDPパッケージの問題である可能性があります...

于 2009-01-13T20:40:45.073 に答える
1

要素の ID が、あなたが考えているものではない可能性は十分にあります。レンダリングされたページをチェックして、ID があるかどうかを確認します。別のコントロール内でレンダリングされるため、ページには別の ID が与えられていると推測しています。

その場合は、コントロールのクライアント ID にアクセスして要素 ID を返すスクリプトをフォームにレンダリングさせることができます。

于 2008-10-13T22:10:51.260 に答える
0

同じグループ内のチェックボックスに getElementsByName を使用します。

コントロールの ID については、TonyB が正しい考えを持っていますが、PreRender イベント ハンドラーで ClientID プロパティを参照するようにしてください。

于 2008-10-14T20:52:32.773 に答える
0

RadWindow が隠しフィールドをロードする前に、javascript が隠しフィールドへの参照を取得しようとしている可能性はありますか? 以前にこれに遭遇したことがあり、問題を回避するために setTimeout を使用する必要があったと思います。

于 2008-10-16T20:56:32.283 に答える