全て、
環境: ASP.NET 2.0、AjaxToolkit ビルド 1.0.20229.0、IE9
$find() を使用してコール アウト エクステンダーの動作を検出しているため、.show() メソッドを使用して明示的に表示できます。残念ながら、$find() は null を返します。
$find('my auto generated behvaiour Id').show();
参考までに: ValidatorCalloutExtender の BehaviorID は、コントロールの ClientID を使用して生成されます (ClientID_ + "BehaviourID" <- $find() 関数で使用するものでもあります)。これは、同じページにこのコントロールのインスタンスが多数あるためです。
レンダリングされたコードを確認したところ、動作を作成する JS が作成されていることがわかります。
Sys.Application.add_init(function() {
$create(AjaxControlToolkit.ValidatorCalloutBehavior ...
$find() は、UpdatePanel でポストバック後に実行され、常に null を返します。
編集 (追加): 私は新しいページを作成しました。以下はコードです。find() はまだ null を返します。
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScripManager1" runat="server" EnablePageMethods="True" >
</asp:ScriptManager>
<asp:TextBox runat="server" ID="txtInputField" />
<asp:RequiredFieldValidator runat="server" ID="valInput"
ControlToValidate="txtInputField"
ErrorMessage="ERROR STRING"
Display="none" /> <ajaxToolkit:ValidatorCalloutExtender runat="server" ID="extValInput" TargetControlID="valInput" BehaviorID="myID" />
<asp:Button runat="server" ID="btn" OnClick="btn_click" CausesValidation="True" />
<script type="text/javascript">
var obj = $find("myID");
alert(obj);
</script>
</form>
追加: JS デバッガーで観察した後、バリデーター コールアウト エクステンダーはエラーが発生したときにのみ表示される (DOM に動的に追加される) ことに気付きました。
問題は次のとおりです: 表示する前に、コール アウトエクステンダーバルーンを再配置する方法は? 本当にcatch 22で、表示されていないときはアクセスできませんし、表示されているときは、間違った場所に表示されているため、もう遅いです。