Domanda

Sto avendo un problema con Telerik RadGrid, voglio attivare la selezione multipla di fila. Voglio anche andare al server ogni volta che viene selezionato o deselezionato una riga. Ho creato una funzione javascript per gestire gli eventi lato client della griglia (OnRowSelected e OnRowDeSelected). Le funzioni di simile a questa:

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

L'altra funzione è molto simile, l'unica differenza è che esso invia la stringa "rowDeselcted" invece di "rowSelected".

Il Load ho controllare per vedere se la richiesta è una richiesta POST utilizzando "IsPostBack" e se è così, posso controllare per vedere se si tratta di un rowSelected o rowdeselected.

Il mio problema è quando seleziono una prima grezza sulla mia griglia, una richiesta POST accade (presumibilmente), tuttavia, quando si seleziona la seconda fila, una richiesta GET viene emesso, che (ovviamente) si tradurrà in IsPostBack ritorno falsa.

Che cosa mi manca qui?


Modifica Ho appena controllato l'oggetto Request e ha scoperto che il valore della proprietà HttpMethod è "POST". Come mai si tratta di una richiesta HTTP POST e IsPostBack restituisce false ??

È stato utile?

Soluzione

Sei sicuro che la richiesta GET ha l'argomento evento?
Penso che ci sia qualcos'altro che sta effettuando la richiesta GET. Probabilmente qualche AJAX magia da quella griglia, qualche risorsa o una chiamata PageMethod AJAX o la riscrittura degli URL cosa o qualcosa del genere.

E 'la pagina Nome default.aspx o qualcosa di simile? A volte in alcuni browser (non ricordo i dettagli) ricevendo un'immagine o giù di lì (non ricordo esatta situazione) rende il browser colpisce anche l'URL "samefolder /", che apre la pagina di default.

Controllare la richiesta con Firebug e vedere che cosa dice.

Altri suggerimenti

La funzione rispetta l'azione del <form>. Ecco cosa fa __doPostBack:

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

Quindi farà qualunque sia la forma è impostato per farlo, questo è solo tipicamente Share asp.net.

Quindi, è possibile? Sì, assolutamente, perché è che si verificano nel tuo caso non sono sicuro.

Senza vedere il markup che la griglia genera, sto supponendo che utilizza un collegamento con un gestore di clic javascript-applicata per fare il postback. Credo che la causa più probabile, quindi, è un errore di javascript che impedisce il gestore di sparare, che vi dà il comportamento predefinito dell'ancora a cui viene applicato il gestore, in questo caso un GET. Miglior consiglio che posso darvi è quello di vedere le cose in Firefox / Firebug e vedere se ci sono eventuali errori mostrati nella console.

Detto questo, si potrebbe desiderare di costruire l'applicazione in modo che funzioni se javascript è disabilitato e sia correggere l'errore e capire come rispondere se si finisce con una richiesta GET.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top