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

はどこlbReihenですかRadListBox

これはうまく機能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 に答える