0

我在中注册了以下 JavaScript Page_Load()

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";

哪里lbReihenRadListBox

这很好用,并且selectedItem在 ListBox 的可见区域中。

在页面上,还有一个按钮:

<asp:Button ID="myBtn" runat="server" Text="Call google" OnClientClick="window.open('http://www.google.ch', '_blank');" />

现在的问题是,当单击按钮并打开新页面(在新选项卡中)时,我的 ListBox 被阻止。我无法滚动它等等。

当我不为 注册 EventHandler 时OnClientLoad,一切都很好。

有人可以给我一个提示,有什么问题吗?- 谢谢。

4

1 回答 1

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;" />
于 2015-03-11T08:58:56.293 回答