Question

J'ai permis la propriété AutoPostBack d'un de mes des zones de texte de forme, qui, selon les écoles w3 ne devrait déclencher un postback quand j'appuyez sur Entrée ou onglet.

Je demande également un __doPostBack() sur pageLoad, compte tenu de la réponse d'un utilisateur à une invite javascript. Quand je fais cela, le Request.Form['__EventTarget'] est pas ce que je mets à être dans l'appel à __doPostBack.

La vraie question pour moi est que si false, je mets l'attribut AutoPostBack de la zone de texte le problème avec l'appel __doPostBack pageLoad disparaît. Ce n'est pas le comportement que j'attendais. Toutes les idées sur ce qui est à l'origine du problème? Pourquoi le AutoPostBack permis avoir une influence?

Voici le code:

asp:TextBox runat="server" ID="userName" OnTextChanged="UpdateTable" AutoPostBack="true"
script type="text/javascript"
        //![CDATA[
        var theForm = document.forms['form1'];
        if (!theForm) {
            theForm = document.form1;
        }
        function __doPostBack(eventTarget, eventArgument) {
            if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
                theForm.__EVENTTARGET.value = eventTarget;
                theForm.__EVENTARGUMENT.value = eventArgument;
                theForm.submit();
            }
        }
        //]]
/script
input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value=""
input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value=""
input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" 
function jsPrompt(name) {
  var ans = confirm('really follow ' + name + '?');
  if (ans) {
    __doPostBack('follow', name);
  }
}

Ensuite, dans la page codebehind:

if (Request.Form["__EventTarget"] == "follow")
  followPerson(Request.Form["__EventArgument"]);                

Mais, je continue à me que Request.Form["__EventTarget"] est ",", et je l'ai fait un pas par le javascript dans le débogueur. Juste avant form.submit(), les arguments ne sont pas ","

Était-ce utile?

La solution

OK ... où commencer. Qu'est-ce que vous essayez d'accomplir exactement ici? Je ne peux penser à aucune raison légitime de regarder Request.Form [ « __ EventTarget »] dans ASP.NET. La seule fois que je l'ai vu est quand une ancienne école programmeur ASP ou PHP apprend d'abord ASP.NET et n'a pas tout à fait saisi le modèle événementiel qui sous-tend ASP.NET.

En outre, qu'est-ce que vous voulez dire quand vous dites que vous appelez __doPostBack ()? Vous ne devriez pas avoir à le faire manuellement soit. Si vous voulez vraiment créer un postback en javascript où il ne se produit pas normalement, vous devez utiliser ClientScriptManager.GetPostBackEventReference (). Donc, utilisez cette méthode et transmettre votre TextBox pour obtenir le code postback approprié. Ensuite, vous pouvez l'exécuter partout dans votre script côté client.

Hope this helps. Si j'ai mal compris le scénario s'il vous plaît ajouter un commentaire et je vais essayer à nouveau. :)

Autres conseils

Où est le code que vous utilisez? Assurez-vous que vous utilisez quelque chose comme:

var element = $get("<%= textbox1.ClientID %>");
__doPostBack(element.name, ''); // second param is command name/argument separated by $

HTH.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top