我需要将.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.
答案 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)