Faire un SetFocus ou GotFocus ou LostFocus dans ASP.Net

Résolu
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 30 nov. 2004 à 20:18
Goldeneye007 Messages postés 70 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 9 juillet 2010 - 17 févr. 2006 à 15:44
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

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
30 nov. 2004 à 22:38
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
3
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
30 nov. 2004 à 22:46
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]
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
30 nov. 2004 à 23:04
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
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
1 déc. 2004 à 22:35
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]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
1 déc. 2004 à 22:36
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]
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
1 déc. 2004 à 23:42
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
0
Goldeneye007 Messages postés 70 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 9 juillet 2010
17 févr. 2006 à 15:44
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
0
Rejoignez-nous