我在Page_Load()
注册了以下JavaScript:
var scriptReihe = "<script type=\"text/javascript\">function OnClientLoadHandlerReihe(sender) {"
+ "var listbox = $find(\"" + lbReihen.ClientID + "\");"
+ "var item = listbox.get_selectedItem();"
+ "item.ensureVisible();"
+ "}"
+ "</script>";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "OnClientLoadHandlerReihe", scriptReihe);
lbReihen.OnClientLoad = "OnClientLoadHandlerReihe";
其中lbReihen
是RadListBox
这很有效,selectedItem
位于ListBox的可见区域。
在页面上,还有一个按钮:
<asp:Button ID="myBtn" runat="server" Text="Call google" OnClientClick="window.open('http://www.google.ch', '_blank');" />
现在的问题是,当点击按钮并打开新页面(在新标签页中)时,我的ListBox会被阻止。我不能滚动它等。
当我没有为OnClientLoad
注册EventHandler时,一切都很好。
有人能给我一个提示,有什么不对吗? - 谢谢。
答案 0 :(得分:2)
确保在每个回发中注册脚本,因为提供的按钮声明将在主页面上调用回发。如果脚本没有正确注册,您将收到脚本错误,这将解释为什么滚动到项目时出现问题以及如果不添加处理程序,为什么显示正常。 也许更容易在标记中添加脚本块并使用服务器代码块来获取列表框ID,如:
<telerik:RadListBox ID="lbReihen" runat="server"></telerik:RadListBox>
<telerik:RadCodeBlock runat="server" ID="RadCodeBlock1">
<script type="text/javascript">
function OnClientLoadHandlerReihe(sender) {
var listbox = $find("<%=lbReihen.ClientID%>");
var item = listbox.get_selectedItem();
item.ensureVisible();
}
</script>
</telerik:RadCodeBlock>
另外,请考虑通过返回false来阻止按钮回发:
<asp:Button ID="myBtn" runat="server" Text="Call google" OnClientClick="window.open('http://www.google.ch', '_blank'); return false;" />