65.9K
CodeProject 正在变化。 阅读更多。
Home

设置焦点控件 - AutoPostBack = true

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

7316

用户经常抱怨页面滚动问题。例如:如果一个较长的页面底部有一个 AutoPostBack = true 的下拉列表,


用户经常抱怨页面滚动问题。
例如:如果一个较长的页面底部有一个 AutoPostBack = true 的下拉列表。选择后页面重新加载,焦点会移到页面顶部。用户需要再次向下滚动页面才能继续操作。这里提供一个示例解决方案...

c# 

public void SetFocus(Page sPage)
    {
        string[] sCtrl = null;
        string sCtrlId = null;
        Control sCtrlFound = default(Control);
        string sCtrlClientId = null;
        string sScript = null;

        sCtrl = sPage.Request.Form.GetValues("__EVENTTARGET");
        if ((sCtrl != null))
        {
            sCtrlId = sCtrl[0];
            sCtrlFound = sPage.FindControl(sCtrlId);
            if ((sCtrlFound != null))
            {
                sCtrlClientId = sCtrlFound.ClientID;
 sScript = "<SCRIPT language='javascript'>document.getElementById('" + sCtrlClientId + "').focus(); if (document.getElementById('" + sCtrlClientId + "').scrollIntoView(false)) {document.getElementById('" + sCtrlClientId + "').scrollIntoView(true)} </SCRIPT>";
 sPage.ClientScript.RegisterStartupScript(typeof(string), "controlFocus", sScript);
            }
        }
    }

在页面加载时调用此函数

示例:SetFocus(this);

vb.net

 Public Sub SetFocus(ByRef sPage As Page)
        Dim sCtrl() As String
        Dim sCtrlId As String
        Dim sCtrlFound As Control
        Dim sCtrlClientId As String
        Dim sScript As String

        sCtrl = sPage.Request.Form.GetValues("__EVENTTARGET")
        If Not IsNothing(sCtrl) Then
            sCtrlId = sCtrl(0)
            sCtrlFound = sPage.FindControl(sCtrlId)
            If Not IsNothing(sCtrlFound) Then
                sCtrlClientId = sCtrlFound.ClientID
                sScript = "<SCRIPT language='javascript'>document.getElementById('" + sCtrlClientId + "').focus(); if (document.getElementById('" + sCtrlClientId + "').scrollIntoView(false)) {document.getElementById('" + sCtrlClientId + "').scrollIntoView(true)} </SCRIPT>"
                sPage.RegisterStartupScript("controlFocus", sScript)
            End If
        End If
    End Sub

示例:Me.SetFocus(Page)

这将设置最后使用的下拉列表的焦点。

© . All rights reserved.