0

私はこれで数日間苦労しましたが、運がありませんでした.

問題はこれです。マルチビューのビューの一部である詳細ビューがありますが、さらに重要なことに、詳細ビュー内にいくつかのコントロールがネストされています。これらのコントロールのうち、2 つのドロップダウンリストとテキストボックスの 3 つに興味があります。ドロップダウンリストの 1 つで、ユーザーがドロップダウンリストから値を選択したときに onchange イベントで動作する JavaScript 関数を添付しました。

これで、JavaScript 関数で、ユーザーが渡されたパラメーターとして「this」を使用して値を選択すると、ドロップダウン リストから値を取得できます。ただし、残りの 2 つのコントロール、テキスト ボックスと他のドロップダウン リストでは、コントロールを取得できません。

次のコード スニペットを試しました (これは両方のコントロールで使用されています)。

document.getElementById('<%= dv.FindControl("ddlTrust.ClientID") %>'); //this returns null

document.getElementById('<%= ddlTrust.ClientID %>'); //errors - says that control has not been declared

document.getElementById("ddlTrust"); //this returns null

何か案は?

4

1 に答える 1

0

dv.FindControl("ddlTrust.ClientID")のクライアント ID を持つコントロールを探しますddlTrust.ClientID。これが、最初のステートメントが null を返す理由です。しかし、3つの方法のうち、あなたはこれに最も近かったと思います.

個人的には、入れ子になった ASP.NET コントロールを操作するときに jQuery を使用することをお勧めします。

ただし、未加工の JavaScript を使用する場合は、アイテム テンプレート内に JavaScript を配置し (アイテムごとに繰り返されます)、次のようにします。

document.getElementById(<%=ControlID %>);

次に、コード ビハインドでグローバル変数として使用し、データバインドControlIDでこの値を設定します。dv

ControlID = ((DropDownList)e.Item.FindControl("ddlTrust")).ClientID;
于 2012-08-01T15:24:45.063 に答える