2011-01-26 12 views
0

.NETがUpdatePanelのdivに対してjavascript関数に生成する実際のコントロールIDを送信する必要があります。これを行うには、ScriptAction行を書き直すにはどうすればよいですか?UpdatePanelの実際のコントロールIDをUpdatePanelAnimationExtender ScriptActionスクリプトに送信するにはどうすればよいですか?

<asp:UpdatePanel ID="update1" runat="server" UpdateMode="Conditional"> 
    ... 
</asp:UpdatePanel> 

<cc1:UpdatePanelAnimationExtender runat="server" TargetControlID="update1"> 
    <Animations> 
     <OnUpdating> 
      <Parallel duration="0"> 
       <ScriptAction Script="doSomething(**update1's ID**);" /> 
      </Parallel> 
     </OnUpdating> 
     ... 
    </Animations> 
</cc1:UpdatePanelAnimationExtender> 

EDIT

私はupdate1.UniqueIddoSomethingのパラメータに配置することがしたいです。

EDIT

次は失敗します。

Exception type: System.Web.HttpParseException 
Exception message: The 'Animations' property of 'cc1:UpdatePanelAnimationExtender' does not allow child objects. 

答えて

1

ClientIDを使用しようとしましたか?

Script="doSomething('<%= update1.ClientID %>');" 

更新された質問によれば、このClientIDをjavascript変数としてページ上部に追加します。その後、js関数からアクセスできます。

このような何か:

<script type="text/javascript"> var update1ClientID = '<%= update1.ClientID %>';</script> 

、その後:

Script="doSomething('' + update1ClientID);" 

これも動作しない場合は、同じアプローチを使用しようとするが、分離コード(をPage_Load)から

ScriptManager.GetCurrent(Me.Page).RegisterClientScriptBlock(Me, Me.GetType, "update1ClientID", "var update1ClientID='" & Me.update1.ClientID & "';", True) 
+0

それは私の更新されたquiestion、感謝を参照してください失敗します。 –

+0

これはうまくいくでしょうが、残念なことに私にはupdatepanelがカスタムコントロールの中にあり、1ページに複数の可能性があります。私はあなたの答えを受け入れるだろうが、そうでなければうまくいくからだ。 –

+0

^^あなたの 'doSomething'-functionが何をしているのか分かりませんが、RegisterClientScriptBlockでその関数を登録して、その関数の中のUpdatePanelのClientIDを' '<%= update1.ClientID%>' ' ?このように、idをパラメータとして渡す必要はありません。 –

1
<ScriptAction Script="doSomething('<%=update1.ClientID %>');" /> 

<ScriptAction Script="alert('<%= update1.ClientID %>');" /> 

を**編集*

Timのソリューションに追加するには、ページごとに複数のカスタムコントロールがある場合は、ページコントロールを繰り返し、カスタムコントロールの種類のコントロールごとにレジスタスクリプトを追加します。

+0

それは私の更新されたquiestion、感謝を参照してください失敗します。 –

関連する問題