Ir para conteúdo


Foto

grid.on('rowclick', Click); e mostrar valores da linha


  • Por favor, faça o login para responder
7 respostas neste tópico

#1 deivisonarthur

deivisonarthur

    Iniciante

  • Membros
  • Pip
  • 4 posts

Postado 18 February 2008 - 16:33

Olá templários e veteranos no Extjs!

Sou novo em Extjs e estou com problemas, hoje passei o dia todo tentando solucionar isso rs!

Eu estou acostumado em com jquery, e eu tinha um script que estou alterando para Ext que pegava o html de um click sobre uma linha. exe:

$("table#the-table tbody tr").click( function() {
//Captura o HTML do tr para futura captura dos dados
var longstring = $(this).html(); <-----

só que em Extjs não estou conseguindo pegar isso nem a porrada! ou seja não estou achando um comando que pegue o conteudo do click na linha.

exe de aonde estou parado:

grid.on('rowclick', Click);
function Click(){
//Captura o HTML do tr para futura captura dos dados
//var longstring = $(this).html();
//var longstring = grid.getSelectionModel().getSelected().innerHTML;
var longstring = grid.getSelectionModel().getSelected().innerHTML;
//var num = grid.getSelections().length;
alert(longstring);
};

Muito obrigado!

Atenciosamente!

Deivison Arthur
Programador JR / Fiocruz - RJ

#2 ReapeR

ReapeR

    Member Avançado

  • Expert User
  • 854 posts
  • LocationBlumenau - SC

Postado 18 February 2008 - 19:07

Você antes pegava o HTML da linha para depois pegar os valores?

Com o Ext, vc pode pegar os dados das linhas diretamente!
De uma procurada no forum 2.x que eu respondi como fazer isso.

abs.

#3 deivisonarthur

deivisonarthur

    Iniciante

  • Membros
  • Pip
  • 4 posts

Postado 20 February 2008 - 23:39

pô amigo infelizmente procurei e não achei seu post poderia me passar.

o maximo que consegui no forum é pegar uns IDs tipo 1001, 1002 ... aonde eu não configurei os IDs para esse tipo. acredito que o js esteja criando automaticamente esses IDs.


poderia me dar uma ajuda? pois esta dificil! rs


Obrigado!

Atenciosamente

Deivison Arthur

#4 EthraZa

EthraZa

    Member Avançado

  • Expert User
  • 542 posts
  • LocationSão Paulo

Postado 21 February 2008 - 23:19

Acho q entendi sua dúvida... acho!
No jQuery vc pegava o valor do elemento no DOM certo?
No Ext vc não precisa se "rebaixar¨  tanto :) ... vc pode pegar os valores de dentro do DataStore que foi usado para montar o Grid.

A melhor coisa que vc pode fazer para entender a estrutura e o poder do DataStore é ve-lo no FireFox com o FireBug.

Onde vc cria seu grid (new Ext.grid...) coloque ele em uma variável sem o "var" na frente. Isso fara com que seu Grid fique referenciado em uma variável global. Então abra o Firebug, va na aba DOM e vc verá sua variável lá, abra o + dela e veja a estrutura do Grid e do DataStore dentro dele. La mesmo vc vai acabar encontrando esses IDs 1001 e 1002 e descobrindo como usa-los, ou não, para chegar à informação q vc quer.
Mandriva Linux in LAMPE (Linux/Apache/MySql/Php/Ext)

#5 deivisonarthur

deivisonarthur

    Iniciante

  • Membros
  • Pip
  • 4 posts

Postado 28 February 2008 - 09:43

agradeço a ajuda de vocês pessoal, mas ainda não consegui :(

tentei fazer alterações na seguinte instrução:

grid.on("rowclick", function(grid, rowIndex, event){ alert(rowIndex);

mas não consegui um resultado muito diferente.

vocês poderiam me dar esta luz?

#6 deivisonarthur

deivisonarthur

    Iniciante

  • Membros
  • Pip
  • 4 posts

Postado 28 February 2008 - 12:07

RESOLVIDO: fala ai pessoal ;D! descobri!!!! ::) ::)
Para caputurar o valor dos titulos(Header) e o valor de um linha(row) com o clique do mouse no Grid basta fazer:


        grid.on("rowclick", onClick);
       
        function onClick(grid, rowIndex, event){
        var str ='';
        for (var i=0; i < grid.getView().getRow(rowIndex).childNodes.length;i++)
        {
        view = grid.getView();
        var texto = view.getHeaderCellText(i).innerHTML;
        texto = texto.substring(0,texto.indexOf('<img'));
        valor = view.getCellText(rowIndex,i).innerHTML;
        str +=  texto + ': ' + valor + '\n';
        }
        alert(str);
        }

Valeu pela ajuda de todos!!!!

#7 yes2

yes2

    Member Avançado

  • Membros
  • PipPipPip
  • 88 posts

Postado 01 December 2008 - 13:30

RESOLVIDO: fala ai pessoal ;D! descobri!!!! ::) ::)
Para caputurar o valor dos titulos(Header) e o valor de um linha(row) com o clique do mouse no Grid basta fazer:


        grid.on("rowclick", onClick);
       
        function onClick(grid, rowIndex, event){
        var str ='';
        for (var i=0; i < grid.getView().getRow(rowIndex).childNodes.length;i++)
        {
        view = grid.getView();
        var texto = view.getHeaderCellText(i).innerHTML;
        texto = texto.substring(0,texto.indexOf('<img'));
        valor = view.getCellText(rowIndex,i).innerHTML;
        str +=  texto + ': ' + valor + '\n';
        }
        alert(str);
        }

Valeu pela ajuda de todos!!!!


boa funcionou aqui :D

#8 Bruno Tavares

Bruno Tavares

    Member Avançado

  • Membros
  • PipPipPip
  • 1166 posts
  • LocationRedwood City, CA, USA

Postado 02 December 2008 - 07:53

Nossa cara, faz isso não! Mexer em DOM com Ext jamais... Se eles mudam uma coisinha na estrutura o script de vocês já era.
Pegar o header e os dados da linha? Mole:

A classe columnModel tem um método getColumnHeader.

getColumnHeader( Number col ) : String
Returns the header for the specified column.


Para pegar os dados você pega o Ext.Record (registro de dados) do Ext.data.Store (store de dados) do grid e extrai todos os dados que quiser.
Vi que você percorre cada coluna pra montar uma string JSON com os dados. Isso no Ext está pronto no Ext.Record.


Pegar os dados de uma linha
grid.on("rowclick", onClick);
        
function onClick(grid, rowIndex, event)
{ 
     var dados = grid.store.getAt( rowIndex );
    
     alert( dados.get('meuDado1') );
     alert( dados.get('meuDado2') );

     //inserir no banco 
     Ext.Ajax.request({
         url:'Action.aspx'
         params:{
                id: dados.get('id')
                ,titulo:dados.get('titulo')
         }
     });
}

Bruno Tavares, Sr. UI Engineer
Netflix




0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos