Question

Je suis un problème avec telerik RadGrid, je veux permettre la sélection multiple de ligne. Je veux aussi aller au serveur chaque fois qu'une ligne est sélectionné ou désélectionné. J'ai créé une fonction javascript pour gérer les événements côté client de la grille (OnRowSelected et OnRowDeSelected). Les fonctions ressemblent à ceci:

 function onOperationRowSelected(sender, eventArgs) {
            __doPostBack("<%=myControl.ClientID %>", "rowSelected:" + eventArgs.get_itemIndexHierarchical());
        }

L'autre fonction est très similaire, la seule différence est qu'il envoie la chaîne « rowDeselcted » au lieu de « rowSelected ».

Page_Load Je vérifie pour voir si la demande est une demande Publier en utilisant « IsPostBack » et si oui, je vérifie pour voir si elle est un rowSelected ou rowdeselected.

Mon problème est lorsque je sélectionne une première cru sur ma grille, une demande post arrive (ce qui est prévu), cependant, lorsque je sélectionne la deuxième ligne, est émis une requête GET, qui (évidemment) entraînera IsPostBack retour faux.

Qu'est-ce que je manque ici?


EDIT: Je viens de vérifier l'objet de demande et a constaté que la valeur de la propriété HttpMethod est « POST ». Comment se fait-il est une requête HTTP POST et retourne IsPostBack faux ??

Était-ce utile?

La solution

Êtes-vous sûr la demande GET a l'argument événement?
Je pense qu'il ya quelque chose d'autre qui fait la demande GET. Probablement un peu de magie AJAX par cette grille, une ressource ou un appel AJAX PageMethod ou une chose de réécriture d'URL ou quelque chose comme ça.

est le nom page Default.aspx ou similaire quelque chose? Parfois, dans certains navigateur (ne me souviens pas de détails) obtenir une image ou si (ne me souviens situation exacte) rend le navigateur frappe également l'URL « de samefolder / », qui ouvre la page par défaut.

Vérifier la demande avec Firebug et voir ce qu'il dit.

Autres conseils

La fonction respecte l'action du <form>. Voici ce que fait __doPostBack:

function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}

Il fera tout ce que le formulaire est mis à faire, c'est généralement juste après en asp.net.

Alors est-il possible? Oui, tout à fait, pourquoi il se produit dans votre cas, je ne suis pas sûr.

Sans voir le balisage que la grille génère, je suppose qu'il utilise un lien avec un gestionnaire de clic javascript appliqué pour faire le postback. Je pense que le coupable le plus probable est donc une erreur javascript qui empêche le gestionnaire de mise à feu, ce qui vous donne le comportement par défaut de l'ancrage auquel le gestionnaire est appliqué, dans ce cas, une requête GET. Le meilleur conseil que je peux vous donner est de regarder dans Firefox / Firebug et voir s'il y a des erreurs affichées dans la console.

Cela dit, vous pouvez construire l'application pour que cela fonctionne si javascript est désactivé et à la fois corriger l'erreur et savoir comment réagir si vous vous retrouvez avec une requête GET.

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