Olá pessoal hoje eu vou falar como editar o dado do GridView usando simplesmente o Web Service com REST Json. Lembre-se que o Web Api já está pronto e funcionando e agora vamos consumir os dados por um site web feito em ASP.NET. Os dados estão vindo do Web Api para preencher o componente GridView e a ideia principal é editar algum dado já preenchido.
O problema é atualizar os dados e pra isso precisamos colocar um botão Editar e campo escondido do tipo Hidden. O campo escondido é para armazenar o identificador buscado do banco de dados. Esse campo fica sempre escondido e serve para ajudar o sistema com as variáveis temporárias. O botão Editar precisa ficar invisível e precisa aparece apenas quando o usuário clicar em Editar dentro do GridView. Note que na listagem 1 existe a propriedade ValidationGroup em alguns objetos da tela, isso porque precisa fazer a validação dos dados no momento que o usuário for colocar os dados. Vamos conseguir informar quais campos e objetos serão validados no clique ou na saída de foco. A listagem 1 mostra o HTML da página.
Listagem 1 - HTML da página
Imagem 1 - Mostrando formulário
O próximo passo é preencher no GridView criado anteriormente e com a propriedade chamada OnRowCommand vamos pegar os dados para edição. O objeto consequentemente gera o método chamado grdContas_RowCommand na parte do código C#. Esse método faz com que o nome do comando seja pego e os valores do Grid sejam enviados para os campos. Como todos os dados que precisamos já estão no GridView e por isso não precisou pesquisar no banco de dados novamente. Muitos precisam passar o identificador para pesquisar no banco de dados novamente e depois atribuir os valores aos objetos da tela, mas no nosso caso não precisa disso. Sem precisar buscar os dados novamente a interação fica bem mais rápida para o usuário.
É necessário colocar mais uma linha de código dentro do objeto GridView e com comando chamado Editar. Essa linha é de um botão chamado ButtonField e com o CommandName igual a Editar. Ele será verificado para dar andamento à edição dos dados. Veja a listagem 2.
Listagem 2 - Objeto GridView
Imagem 2 - Mostrando GridView
É muito importante entender o que foi feito na listagem 2 para dar sequência na listagem 3. O método RowCommand pode ser usado para qualquer tipo de operação necessária em sua aplicação. A primeira linha de código da listagem 3 verifica se o nome do comando é Editar, se for então ele pega o index através do comando de argumento e por fim buscar a chave pelo DataKey. Com a chave na mão basta pegar os dados e atribuir para os objetos de tela. Foi necessário utilizar um script para transformar de HTML para texto plano porque o GridView deixa tudo com comandos HTML, por exemplo: % @& e tudo mais. No final precisamos colocar o botão de editar visível e botão de enviar invisível. Veja a listagem 3.
Listagem 3 - Pegando os dados e colocando nos objetos de tela.
protected void grdContas_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Editar")
{
int index = int.Parse((string)e.CommandArgument);
string chave = grdContas.DataKeys[index]["IdConta"].ToString();
hdIdConta.Value = chave.ToString();
txtDescricao.Text = HtmlToText.StripHTML(grdContas.Rows[index].Cells[1].Text, true);
cmdEditar.Visible = true;
cmdEnviar.Visible = false;
}
}
O botão de editar é o que vai comunicar com o Web Api mandando os dados necessários para update ou atualização os dados. No Web Api o método responsável para atualização de dados é o PUT, não se esqueça disso. A primeira linha pega o client server, depois precisamos preencher todos os valores da classe Conta e para finalizar, utilizamos o responseMessage chamando o endereço PUT passando a chave como parâmetro. O PUT precisa passar a chave como parâmetro na URL e dentro da classe Conta. É uma regra do PUT, basta verificar a documentação. Se a resposta vier positiva, basta mostrar uma mensagem para o usuário ou então redirecionar para uma página. No nosso caso, redirecionei para a mesma página passando parâmetros. Veja a listagem 4.
Listagem 4 - Atualizando os valores
protected void cmdEditar_Click(object sender, EventArgs e)
{
//pega o client server
var client = HttpClientRequest.getClient();
//preenche os dados
var _conta = new Conta()
{
IdConta = int.Parse(hdIdConta.Value.ToString()),
DescricaoConta = txtDescricao.Text,
IdUsuario = int.Parse(Session["MONEY_IDUSUARIO"].ToString())
};
System.Net.Http.HttpResponseMessage response = client.GetAsync(ConstantesUteis.PUT_CONTA + hdIdConta.Value).Result;
response = client.PutAsJsonAsync(ConstantesUteis.PUT_CONTA + hdIdConta.Value, _conta).Result;
Uri envioUri = response.Headers.Location;
if (response.IsSuccessStatusCode)
{
Response.Redirect("AddContas?guid=" + Guid.NewGuid() + "&id=editsucesso");
}
else
Response.Write(response.StatusCode.ToString() + " - " + response.ReasonPhrase.ToString());
}
Imagem 3 - Recebendo mensagem depois de editar
Bom, espero que tenha gostado pois o objetivo foi mostrar passo a passo de como atualizar informações no banco de dados através do consumo do Web Api utilizando ASP.NET com a linguagem C#. Qualquer dúvida pode entrar em contato pelo site www.mauriciojunior.org.