の私はセットアップを持っている:私は知っている、このような混乱何かどのようにすべての子供たちと子供たちの子供たちを検索するなど、親のdiv
<ListView>
<ItemTemplate>
<div id="Content">
<asp: TextBox ID="OuterTextBox" />
<div id="Controls">
<asp: ComboBox ID="InnerComboBox"/>
</div>
<div>
<asp: Button ID="Submit" />
</div>
</div>
</ItemTemplate>
<ListView>
グラグラ、これは単なるモックアップです。本当のことは悪いです。これはItemTemplateであるため、ページのコンパイル時にIDを動的に生成することは明らかです。私がしようとしているのは、 "Content"とラベル付けされたdivのレベルで始まり、すべての子を(再帰的に)検索して、指定された各コントロールの値を見つけるオブジェクトを作成することです。この例では、OuterTextBoxとInnerComboBoxです。私を混乱させているのは、要素のばかげた階層です。どのようにこれを最も効率的に行うのですか?私はただちに道路を下っていくと仮定することができます、divの階層構造に変化があるので、私が何かを動かすとすぐに壊れない何かを得ることを望んでいるので、コントロールへの明示的なパスは行っていません働くここで私は、現在に拡大しようとしているコンセプトは次のとおりです。
function ClientIDS(obj) {
var txt = $(obj).prevAll('input[id*="txtTextBox"]:first');
alert($(txt).val());
return false;
}
私は、サーバーコントロールのOnClientClick =「ClientIDが(この)」のような何かをするだろう。
このコードは、シンプルでクリーンで、すべてのコントロールが同じdivにある(兄弟として)ときに完全に機能しました。このようなdivでコントロールが分割されると、誰もが同様の単純な方法でコントロールを見つける方法を考え出すことができますか?
フォームに入れると、フォームの* elements *コレクションのプロパティとしてアクセスできます。 – RobG