簡體   English   中英

自動滾動到ASP.NET中動態生成的控件

[英]auto scroll to dynamically generated control in ASP.NET

因此,我有一個單擊該按鈕時會生成控件的按鈕。 它嵌套在div內的更新面板中,當它在y方向上溢出時會創建一個滾動條。 當前,當我單擊按鈕並且它已經溢出時,將創建該控件,盡管它不會滾動到該控件。 因此,似乎什么都沒有發生。 我希望滾動條向下滾動到創建控件的位置,以便更加用戶友好。

我已經嘗試過Page.SetFocus(control)和control.Focus(),但是兩者都不起作用。 我查找了其他帖子,但由於我生成的控件位於updatePanel內部,因此它們並不能完全解決問題。

<!-- add button and dynamic control area -->
            <asp:Button ID="addStreamButton" runat="server" Text="+" OnClick="AddStreamButton_Click" Width="30px" Height="30px" Tooltip="add new stream"/>
            <div class="col-sm-6">
                <asp:UpdatePanel runat="server" ID="updatePanelPlaceholder" ChildrenAsTriggers="false" UpdateMode="Conditional"
                    style="width:650px; height:550px; overflow-y:auto; overflow-x:hidden">
                    <ContentTemplate>
                        <div class="row">
                            <asp:PlaceHolder ID="ph1" runat="server"></asp:PlaceHolder>
                        </div>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="addStreamButton" EventName="Click" />
                    </Triggers>
                </asp:UpdatePanel>

                <script type="text/html">
                    function scrollToControl(controlName) {
                        document.getElementById(controlName).scrollIntoView();
                    }
                </script>
            </div>
protected void AddStreamButton_Click(object sender, EventArgs e)
        {
            var userControl = (DataStreamSelector)Page.LoadControl("~/DataStreamSelector.ascx");
            userControl.ID = "DynamicControl" + ControlCount;
            ControlCount++;
            ph1.Controls.Add(userControl);

            //Page.Focus(userControl);
            Page.SetFocus(userControl);
        }

您需要在客戶端調用它。 添加此AddStreamButton_Click而不是焦點代碼:

ScriptManager.RegisterClientScriptBlock(this, GetType(), "none", "<script>scrollToControl('" + userControl.ID.ToString() + "');</script>", false);

這將調用您已經定義的scrollToControl方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM