Frage

Ich habe ein Problem mit Telerik Radgrid, ich möchte mehrere Zeilenauswahl aktivieren. Ich möchte auch zum Server gehen, wenn eine Zeile ausgewählt oder abgewählt wird. Ich habe eine JavaScript -Funktion erstellt, um die Client -Seitenereignisse des Grids (OnrowSelected und OnrowDeselected) zu verarbeiten. Die Funktionen sehen so aus:

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

Die andere Funktion ist sehr ähnlich. Der einzige Unterschied besteht darin, dass die Zeichenfolge "rowdeselcted" anstelle von "streikend" sendet.

Auf page_load prüfe ich, ob die Anforderung eine Postanforderung mit "ISPostback" ist. Wenn ja, prüfe ich, ob es sich um eine zeizige oder rowdeselected handelt.

Mein Problem ist, wenn ich ein erstes RAW in meinem Raster auswähle, eine Postanforderung (was erwartet wird). Wenn ich jedoch die zweite Zeile auswähle, wird eine GET -Anfrage ausgestellt, was (offensichtlich) dazu führt, dass ISPostback falsch zurückgibt.

Was vermisse ich hier?


BEARBEITEN: Ich habe gerade das Anforderungsobjekt überprüft und festgestellt, dass der Eigenschaftswert von HttpMethod "Post" ist. Wie kommt es, dass es eine HTTP -Postanforderung ist und IsPostback false zurückgibt?

War es hilfreich?

Lösung

Sind Sie sicher, dass die Get -Anfrage das richtige Ereignisargument hat?
Ich denke, es gibt noch etwas, das die Get -Anfrage stellt. Wahrscheinlich etwas Ajax -Magie durch dieses Raster, eine Ressource oder ein Ajax -Pagemethod -Anruf oder eine URL -Umschreibung von Ding oder ähnlichem.

Ist der Seitenname default.aspx oder so ähnlich? Manchmal trifft der Browser in einem Browser (kann sich an Details erinnern), das ein Bild abgerufen hat, auch auf die URL "SameFolder/", die die Standardseite öffnet.

Überprüfen Sie die Anfrage mit Firebug und sehen Sie, was sie sagt.

Andere Tipps

Die Funktion respektiert die Aktion der <form>. Hier ist, was __dopostback tut:

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

Es wird also alles tun, was das Formular so eingestellt hat, das wird normalerweise in ASP.NET veröffentlicht.

Ist es also möglich? Ja, absolut, warum es in Ihrem Fall vorkommt, bin ich mir nicht sicher.

Ohne das Markup zu sehen, das das Raster generiert, gehe ich davon aus, dass es einen Link mit einem JavaScript-angewandten Klick-Handler verwendet, um den Postback durchzuführen. Ich denke, der wahrscheinlichste Schuldige ist also ein JavaScript -Fehler, der den Handler beim Schießen verhindert, wodurch Sie das Standardverhalten des Ankers verleihen, auf den der Handler angewendet wird, in diesem Fall ein Get -Get. Der beste Rat, den ich Ihnen geben kann, ist, es in Firefox/Firebug zu betrachten und zu prüfen, ob in der Konsole Fehler angezeigt werden.

Sie möchten jedoch die App so erstellen, dass sie funktioniert, wenn JavaScript deaktiviert ist, und beide den Fehler korrigieren und herausfinden, wie Sie reagieren sollen, wenn Sie eine Get -Anfrage haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top