如何将UpdatePanel的实际控件ID发送到UpdatePanelAnimationExtender ScriptAction脚本?

时间:2011-01-26 22:04:42

标签: asp.net updatepanel ajaxcontroltoolkit

我需要将.NET为UpdatePanel的div生成的实际控件ID发送到javascript函数。如何重写下面的 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>

修改

我希望将update1.UniqueId放在doSomething的参数中。

编辑

以下失败:

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

使用

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

2 个答案:

答案 0 :(得分:1)

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

**编辑 *

要添加到Tim的解决方案,如果每页有多个自定义控件,请遍历页面控件并为每个自定义控件类型的控件添加注册脚本。

答案 1 :(得分:1)

您是否尝试过使用其ClientID?

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

根据您更新的问题:将此ClientID添加为页面顶部的javascript变量。然后你可以从js-function访问它。

这样的事情:

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

然后:

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

如果这也不起作用,请尝试使用相同的方法但来自Codebehind(Page_Load)

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