Dev (Back & Front)ARTIGO

SilverLight 4 – Invocando um serviço que expõe dados (C#) – Parte 02

Na primeira
parte deste artigo
criamos o projeto SilverLight no
Visual Web Developer, e definimos as classes do nosso
domínio. Também criamos o serviço WCF e a interface SilverLight da nossa
aplicação.

Agora, vamos implementar o código no arquivo MainPage.xaml.cs,
referente ao evento Click do botão – Procurar Funci – que irá
chamar a rotina carregaTodosFuncionarios responsável por usar o serviço criado para obter as informações dos
funcionários.

Abra o projeto SilverLightFuncionarios e
selecione o arquivo MainPage.xaml.cs. Depois, defina o seguinte código
neste arquivo:

using System;
using System.Windows;
using System.Windows.Controls;
namespace SilverlightFuncionarios
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void ProcuraFunciButton_Click(object sender, RoutedEventArgs e)
{
int funcionarioID;
if (int.TryParse(FunciIDTextBox.Text, out funcionarioID))
{
FuncionarioService.FuncionarioServiceClient proxy = new SilverlightFuncionarios.FuncionarioService.FuncionarioServiceClient();

proxy.GetFuncionarioPorIdCompleted +=
new EventHandler<SilverlightFuncionarios.FuncionarioService.GetFuncionarioPorIdCompletedEventArgs>(proxy_GetFuncionarioPorIdCompleted);

proxy.GetFuncionarioPorIdAsync(funcionarioID);
}
else
ErrorTextBlock.Text = "O valor informado é inválido.(Informe somente valores numéricos)";
}
void proxy_GetFuncionarioPorIdCompleted(object sender, SilverlightFuncionarios.FuncionarioService.GetFuncionarioPorIdCompletedEventArgs e)
{
DetailGrid.DataContext = e.Result;
}
private void FunciDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
DetailGrid.DataContext = FunciDataGrid.SelectedItem as FuncionarioService.Funcionario;
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
carregaTodosFuncionarios();
}

private void carregaTodosFuncionarios()
{
FuncionarioService.FuncionarioServiceClient proxy = new SilverlightFuncionarios.FuncionarioService.FuncionarioServiceClient();
proxy.GetTodosFuncionariosCompleted += proxy_GetTodosFuncionariosCompleted;
proxy.GetTodosFuncionariosAsync();
}

void proxy_GetTodosFuncionariosCompleted(object sender, SilverlightFuncionarios.FuncionarioService.GetTodosFuncionariosCompletedEventArgs e)
{
if (e.Error == null)
FunciDataGrid.ItemsSource = e.Result;
else
ErrorTextBlock.Text = "Ocorreu um erro durante a comunicação com o serviço";
}
}
}

No evento Loaded do controle, estamos
chamando o método carregaTodosFuncionarios() que irá criar uma
instância do serviço WCF, além de usar o método GetTodosFuncionarios, obtendo
todos os funcionários e exibindo-os no controle DataGrid.

Quando o usuário informar um código de funcionário
e clicar no botão – Procurar Funci – teremos no evento Click deste
botão a criação de uma nova instância do serviço WCF, e a chamada do método
GetFuncionarioPorId, que irá obter o funcionário com o código informado.

Quando um funcionário é selecionado no controle
DataGrid, o método SelectionChanged do controle é disparado. E o
DataContext é atualizado com as informações do funcionário, selecionado e as
informações atualizadas nos controles do formulário.

Executando o projeto iremos o obter:

svl4_sed21.gif

Informando um código de funcionário e clicando no botão – Procurar Funci
– teremos:

svl4_sed22.gif

Simples. E assim concluímos o nosso artigo, que mostra como invocar um serviço WCF
que expõe dados, onde tivermos a oportunidade de abordar diversos conceitos e
recursos presentes no SilverLight.

Pegue o projeto completo aqui : SilverlightFuncionarios.zip

Eu sei é apenas SilverLight 4 ,
mas eu gosto…

é referência em Visual Basic no Brasil e autor dos livros "Aprenda Rápido: ASP" e "ASP, ADO e Banco de Dados na Internet". Mantenedor do site macoratti.net.

Ver perfil