Faire un SetFocus ou GotFocus ou LostFocus dans ASP.Net [Résolu]

Signaler
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
-
Messages postés
70
Date d'inscription
mercredi 7 décembre 2005
Statut
Membre
Dernière intervention
9 juillet 2010
-
Salut à tous, j'ai rechercher sur le forum sans trouver adéquat, dans les sources j'ai trouver ceci mais ça me parrait un peu lours pour du .NET

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'condition d'ouverture de page
setfocus(Textbox)
End Sub

    Public Function setFocus(ByVal champs As System.Web.UI.WebControls.WebControl)

        Dim s As String

        s = "<script language= ""javascript"">document.getElementById('" + champs.ClientID + "').focus()</script>"
        Page.RegisterStartupScript("focus", s)

    End Function


Quelqu'un à t'il une autre solution pour prendre le focus d'un objet ASP.Net

Merci à tous

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]

7 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
et non c'est la meilleur facon de faire, et c'est pas si lourd que ca, il n'y a que page.registerStatupScript(...,...) dans ce code :)

mais je comprend ce que tu veux dire. C'est pourtant la seule véritable astuce, tout simplement car la seule solution pour interagir avec le navigateur, dans ton cas, mettre le focus, et de passer par du code javascript, car asp.net travaille en mode "deconnecté", donc il faut dire à asp.net qu'il va devoir ecrire du code javascript ...

voila l'explication, peut etre que dans asp.net 2 (il me semble mais pas sur) il y aura la fonction setfocus, mais elle utilisera le meme procédé puisque c'est le seul possible

Cyril
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Ok merci Cyril, effectivement lorsque je dis lourd c'est que en VB je fait control.setfocus et c'est tout.

Merci

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
oui j'avais bien compris :)

Je viens de verifier pour .net 2 ils ont mis la méthode comme ceci :

Page.SetFocus(TextBox1)

qui me donne dans ma page ca :



<script type="text/javascript">
<!--
WebForm_AutoFocus('TextBox1');// -->
</script>

et si on fouille dans les fichiers de script associé au tombe la dessus

function WebForm_FindFirstFocusableChild(control) {    if (control null || control.tagName null) {
        return null;
    }
    var tagName = control.tagName.toLowerCase();
    if (tagName == "undefined") {
        return null;
    }
    var children = control.childNodes;
    if (children != null) {
        for (var i = 0; i < children.length; i++) {
            try {
                if (WebForm_CanFocus(children[i])) {
                    return children[i];
                }
                else {
                    var focused = WebForm_FindFirstFocusableChild(children[i]);
                    if (WebForm_CanFocus(focused)) {
                        return focused;
                    }
                }
            } catch (e) {
            }
        }
    }
    return null;
}
function WebForm_AutoFocus(focusId) {
    var targetControl;
    if (__nonMSDOMBrowser) {
        targetControl = document.getElementById(focusId);
    }
    else {
        targetControl = document.all[focusId];
    }
    var focused = targetControl;
    if (targetControl != null && (!WebForm_CanFocus(targetControl)) ) {
        focused = WebForm_FindFirstFocusableChild(targetControl);
    }
    if (focused != null) {
        try {
            focused.focus();
            focused.scrollIntoView();
            if (window.__smartNav != null) {
                window.__smartNav.ae = focused.id;
            }
        }
        catch (e) {
        }
    }
}
function WebForm_CanFocus(element) {    if (element null || element.tagName null) return false;
    var tagName = element.tagName.toLowerCase();    return ((element.disabled null || element.disabled false) &&
            (element.type == null || element.type.toLowerCase() != "hidden") &&
            WebForm_IsFocusableTag(tagName) &&
            WebForm_IsInVisibleContainer(element)
            );
}
function WebForm_IsFocusableTag(tagName) {
    return (tagName == "input" ||
            tagName == "textarea" ||
            tagName == "select" ||
            tagName == "button" ||
            tagName == "a");
}
function WebForm_IsInVisibleContainer(ctrl) {
    if (ctrl.disabled == true ||
        ( typeof(ctrl.style) != "undefined" &&
          ( ( typeof(ctrl.style.display) != "undefined" &&
              ctrl.style.display == "none") ||
            ( typeof(ctrl.style.visibility) != "undefined" &&
              ctrl.style.visibility == "hidden") ) ) ) {
        return false;
    }
    else if (typeof(ctrl.parentNode) != "undefined" &&
             ctrl.parentNode != null &&
             ctrl.parentNode != ctrl) {
        return WebForm_IsInVisibleContainer(ctrl.parentNode);
    }
    return true;
}



j'ai pas cherché à le lire :D mais bon vu les titres ils verifient que ca fasse pas d'erreur JS, pour ne pas mettre le focus a une table ;) car oui on peut mettre n'importe quel controle dans page.SetFocus(control) y compris un image non "focussable"

quand je vois tout ca, ca fait envie asp.net 2 :D dommage qu'elle n'est pas encore sortis, et que je dois faire un site maintenant ;)

Cyril
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Salut Cyril,

J'ai donc tester mais il me dit que la méthode Focus n'est pas connu.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
En fait je voudrais faire un setfocus mais sur un control ASP.Net et non HTML.

as-tu une idée ?

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
ce que je t'ai montré au dessus c'est pour du .net 2 ;) et ca revient exactement au meme que ta méthode ci haut ...

Cyril
Messages postés
70
Date d'inscription
mercredi 7 décembre 2005
Statut
Membre
Dernière intervention
9 juillet 2010

Moi je dois utiliser Set Focus mais c'est marqué que SetFocus n'est pas un menbre de string. J'ai expliquer mon problème à la page : http://www.aspfr.com/forum.v2.aspx?ID=665841&post=ok