none
Update Personalizado no GridView RRS feed

  • Pergunta

  • Blz galera!

    O meu problema eh o seguinte:
    Tenho um GridView conectado a um ObjectDataSource. O Grid apresenta uma consulta com 5 colunas, porém quando eu clicar em editar eu quero atualizar apenas um campo de uma coluna. Até ai tudo bem. Soh que o metodo que eu tenho para atualizar aceita como parametro apenas o ID e o campo o qual quero atualizar, dai o erro que acontece pois ao clicar em update aparece um erro dizendo que o método tem poucos parametros.

    Como faço para resolver isso. Tem como eu personalizar o evento rowUpdating? Como faço para pegar o ID do registro?

    segunda-feira, 18 de setembro de 2006 11:56

Todas as Respostas

  • Olá Thiago,

      Tem como sim, viu, o seguinte, faça uma stored Procedure para o update, onde nela vc crie blocos de códigos, onde se vc receber um único parâmetro, aqle será "atualizado". Qlqr duvida entre em contato.

    Ex.:

    SET NOCOUNT ON;

    if ( @campo is null ) or (@campo= '' )

    Update dbo.Enderecos.id, dbo.Enderecos.uf, dbo.Enderecos.localidadenu, dbo.Enderecos.logradouro, dbo.Enderecos.cep, dbo.Enderecos.logcomp, dbo.Enderecos.tipo, dbo.Bairro.bairro , dbo.Cidades.localidade FROM dbo.Enderecos INNER JOIN dbo.Bairro ON dbo.Enderecos.bairronu = dbo.Bairro.id INNER JOIN dbo.Cidades ON dbo.Enderecos.localidadenu = dbo.Cidades.id

    ORDER BY dbo.Enderecos.Logradouro

    else

    if (@campo = 'cep' )

    Begin

    Update dbo.Enderecos.id, dbo.Enderecos.uf, dbo.Enderecos.localidadenu, dbo.Enderecos.logradouro, dbo.Enderecos.cep, dbo.Enderecos.logcomp, dbo.Enderecos.tipo, dbo.Bairro.bairro , dbo.Cidades.localidade FROM dbo.Enderecos INNER JOIN dbo.Bairro ON dbo.Enderecos.bairronu = dbo.Bairro.id INNER JOIN dbo.Cidades ON dbo.Enderecos.localidadenu = dbo.Cidades.id

    WHERE dbo.Enderecos.cep = @conteudo

    ORDER BY dbo.Enderecos.cep

    End

    else

     

    segunda-feira, 18 de setembro de 2006 15:57
  • Olá Thiago,

      Tem como sim, viu, o seguinte, faça uma stored Procedure para o update, onde nela vc crie blocos de códigos, onde se vc receber um único parâmetro, aqle será "atualizado". Qlqr duvida entre em contato.

    Ex.:

    SET NOCOUNT ON;

    if ( @campo is null ) or (@campo= '' )

    Update dbo.Enderecos.id, dbo.Enderecos.uf, dbo.Enderecos.localidadenu, dbo.Enderecos.logradouro, dbo.Enderecos.cep, dbo.Enderecos.logcomp, dbo.Enderecos.tipo, dbo.Bairro.bairro , dbo.Cidades.localidade FROM dbo.Enderecos INNER JOIN dbo.Bairro ON dbo.Enderecos.bairronu = dbo.Bairro.id INNER JOIN dbo.Cidades ON dbo.Enderecos.localidadenu = dbo.Cidades.id

    ORDER BY dbo.Enderecos.Logradouro

    else

    if (@campo = 'cep' )

    Begin

    Update dbo.Enderecos.id, dbo.Enderecos.uf, dbo.Enderecos.localidadenu, dbo.Enderecos.logradouro, dbo.Enderecos.cep, dbo.Enderecos.logcomp, dbo.Enderecos.tipo, dbo.Bairro.bairro , dbo.Cidades.localidade FROM dbo.Enderecos INNER JOIN dbo.Bairro ON dbo.Enderecos.bairronu = dbo.Bairro.id INNER JOIN dbo.Cidades ON dbo.Enderecos.localidadenu = dbo.Cidades.id

    WHERE dbo.Enderecos.cep = @conteudo

    ORDER BY dbo.Enderecos.cep

    End

    else

     (...)

    segunda-feira, 18 de setembro de 2006 15:58
  • Como faço para pegar o DataKey da linha no evento RowUpdating?
    terça-feira, 19 de setembro de 2006 11:39
  • Olá Thiago,

        Faça um Where, onde a key for igual....

       Abraços

    terça-feira, 19 de setembro de 2006 12:01
  • O que eu preciso saber eh como eu recupero o DataKeyName dentro do evento RowUpdating???
    terça-feira, 19 de setembro de 2006 16:49
  • Olá Thiago,

        Seguinte, me explica direito então, vc qr recuperar o DataKeyName dentro do evento RowUpdating, mas primeiro vc está usando q controle para fazer a atualização no gridview? tipo se vc estiver usando um dataSource para preencher o gridview, vc pode no insert criar uma variavel output e armazena-la em uma Session... E ai vc pode fazer com que sempre que ele vá atualizar ele recupere a session.. e atualiza o campo, baseado naqle script para dar update em campos variados.

         Ok??

         Se não for o que eu entendi e usando o dataSource... me explique melhor.

       Abraços

    terça-feira, 19 de setembro de 2006 17:28
  • É o seguinte:

    - Eu tenho o GridView conectado a um ObjectDataSource. O GridView mostra 3 colunas, pórem eu quero o método que que o ObjectDataSource está acessando atualiza recebe como parametros apenas o ID e um dos campos. Só que quando eu clico em "Update" dentro no Grid dá erro pq ele passa mais parâmetros.

    - Entao eu estava pensando em personalizar o evento RowUpdating para receber apenas o campo que preciso, o ID e chamar o método de dentro do evento.

    Blz?

    terça-feira, 19 de setembro de 2006 17:56
  • Bom Thiago,

     Então era o que estava imaginando mesmo, e se vc prestar atenção no que eu escrevi antes e seguir certinho dá certo, pois eu já tive que fazer isso.

      Abraços e boa sorte.

    quarta-feira, 20 de setembro de 2006 13:05
  • Ainda continuo sem enteder como eu recupero o ID ou o DataKeyName da linha que quero alterar.Se possível gostaria que fosse mais claro ou enviasse um modelo de código.

    quarta-feira, 20 de setembro de 2006 17:23
  • Bom Thiago,

        Faça o seguinte, armazene a DataKEyName em uma variavel de Sessão. Session("KeyName") = DataKey .... e faça a stored procedure do jeito que descrevi acima, com os campos de sua necessidade, e fazendo com que ela avalie os campos que irá receber para dar update. pq assim os únicos campos que ela irá atualizar serão aqles recebidos pelo parâmetro. Não sobrecarregará a página nem irá dar erro por excesso de parametros. Não tem erro.

        Qlqr coisa me passa seu msn ou email e tentarei te explicar melhor. Pode ser?

       Abraços.

    quarta-feira, 20 de setembro de 2006 21:48
  • No evento selectedindexchange do grid

    DataKeyArray keys = grvPecas.DataKeys;
            int codEntidade = int.Parse(keys[grvPecas.SelectedIndex]["ENTIDADE_CODIGO"].ToString());
            int codPeca = int.Parse(keys[grvPecas.SelectedIndex]["PECAS_CODIGO"].ToString());  
    quarta-feira, 16 de maio de 2007 15:30