Pergunta

Estou tendo um problema com o Telerik RadGrid, quero ativar a seleção de várias linhas. Eu também quero ir ao servidor sempre que uma linha for selecionada ou desmarcada. Criei uma função JavaScript para lidar com os eventos laterais do cliente da grade (OnRowselected e OnRowDeselected). As funções são assim:

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

A outra função é muito semelhante, a única diferença é que ela envia a string "rowdeselcted" em vez de "lotes selecionados".

Na Page_load, verifiquei se a solicitação é uma solicitação de postagem usando "ISPostback" e, em caso afirmativo, verifico se é um ladrão ou RowDeselected.

Meu problema é que, quando seleciono um primeiro bruto na minha grade, ocorre uma solicitação de postagem (o que é esperado), no entanto, quando selecionar a segunda linha, uma solicitação GET é emitida, que (obviamente) resultará no retorno do ISPostback false.

O que estou perdendo aqui?


EDITAR: Acabei de verificar o objeto de solicitação e descobri que o valor da propriedade HttpMethod é "post". Como é que é uma solicitação de postagem HTTP e retorna falsa?

Foi útil?

Solução

Tem certeza de que a solicitação Get tem o argumento do evento certo?
Eu acho que há algo mais que está fazendo a solicitação de obter. Provavelmente alguma magia do Ajax por essa grade, algum recurso ou ajax pagemethod Call ou URL Rewriting Thing ou algo assim.

O nome da página é default.aspx ou algo parecido? Às vezes, em algum navegador (não me lembro de detalhes) obter uma imagem ou mais (não consigo lembrar a situação exata) faz com que o navegador também atinja o URL "SameFolder/", que abre a página padrão.

Verifique a solicitação com o Firebug e veja o que ele diz.

Outras dicas

A função respeita a ação do <form>. Aqui está o que __DOPOSTBACK faz:

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

Portanto, fará o que o formulário esteja definido, que normalmente é publicado no ASP.NET.

Então é possível? Sim, absolutamente, por que está ocorrendo no seu caso, não tenho certeza.

Sem ver a marcação que a grade gera, estou assumindo que ele usa um link com um manipulador de cliques aplicado JavaScript para fazer o postback. Eu acho que o culpado mais provável, então, é um erro de JavaScript que está impedindo que o manipulador seja disparado, o que fornece o comportamento padrão da âncora à qual o manipulador é aplicado, neste caso a Get. O melhor conselho que posso dar é analisá -lo no Firefox/Firebug e ver se há algum erro mostrado no console.

Dito isto, convém criar o aplicativo para que ele funcione se o JavaScript estiver desativado e corrige o erro e descubra como responder se você acabar com uma solicitação GET.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top