我在用户控件中有一个JavaScript代码,如果用户控件在启动时可见,它就可以正常工作。
然后,我将此用户控件添加到页面上的面板 ->仍然正常工作。
接下来,我将此用户控件添加到页面上的面板,并使面板不可见。(在 ASPX 文件中设置或在 csfile 中Page_Load)
页面将加载错误: "JavaScript 运行时错误:'myFunction' 未定义">
它适用于来自AsyncFileUpload的OnClientUploadComplete,所以我不能传递任何参数。
我发现的唯一解决方法是使面板"隐藏"而不是可见:"False"在具有此用户控件的页面中。
SomePanel.Attributes.Add("style", "visibility:hidden");
但是这种方式需要使用此用户控件orz修改所有页面。
任何想法将不胜感激。
JavaScript 代码:
<script type="text/javascript">
function myFunction() {
var ButtonID = '<%=btnAddFile.ClientID%>';
document.getElementById(ButtonID).click();
}
</script>
它用于AsyncFileUpload中的"OnClientUploadComplete"
<cc1:AsyncFileUpload ID="AsyncFileUpload1" runat="server" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" OnClientUploadComplete="myFunction" OnUploadedFileError="AsyncFileUpload1_UploadedFileError" />
如果我将 JavaScript 移动到母版页或其他位置,我将在获取 ClientId 时遇到问题。 我会说最好处理用户控件内的所有内容....如果可能的话
链接
用Page_PreRender编写javascript就可以完成这项工作。
在此阶段,客户端 ID 已准备就绪。
可以直接传递客户端 ID。
无需使用引用 (<%=btnAddFile.ClientID%>),因此用户控件也可以在转发器或网格视图中使用。