在javascript中触发自动回发

时间:2011-02-15 21:07:58

标签: javascript asp.net ajax

我无法访问<body>代码,因为它位于母版页中。 我希望在页面加载时触发自动回发:

<script type="text/javascript">
       window.onscroll=  __doPostBack("<%= button.ClientID %>", "");
</script>

我应该把这段代码放在哪里?如果我将它放在</asp:Content>标记之前,我会得到一个未实现的JS错误。

知道我应该怎么做吗?

PS:我需要触发该回发,因为我想在页面加载时填充更新面板

1 个答案:

答案 0 :(得分:4)

您可以将此类代码放在任何位置:

<% if (!Page.IsPostBack) { %>
<script type="text/javascript">
window.onload = function() {
   __doPostBack("<%= button.ClientID %>", "");
}
</script>
<% } %>

假设你正在使用C# - 如果你有VB.NET,语法会有所不同。

修改:为了避免使用<%%>,您可以在页面的Page_Load中使用此内容:

if (!Page.IsPostBack) {
   this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "auto_postback", "window.onload = function() { __doPostBack(\"" +  button.ClientID + "\", \"\"); }; ", true);
}

编辑II:更好的工作机会的替代方法是改为使用这样的JS代码:

"window.onload = function() { var buttonID = '" +  button.ClientID + "'; alert('ID: ' + buttonID + ', clicking...'); document.getElementById(buttonID).click(); }; "

这将有希望显示按钮的客户端ID,然后自动单击它。如果没有运气,请确保ID正确并且确实存在于文档中,我们将尝试找出问题所在。