Populando Datagrid usando LINQ TO SQL em Silverlight Parte II

Populando DataGrid usando Linq to Sql em Silverlight II


Este artigo requer a leitura do artigo Populando DataGrid usando Linq to Sql em Silverlight Parte I. Neste apenas foi preparado o ambiente, onde criamos o mapeamento relacional usando a classe LINQ To SQL e a criação de uma stored procedure.
Para trabalhar com banco de dados em Silverlight é necessário usar algum tipo de serviço para acesso ao banco de dados. Sendo assim, neste exemplo, será usado o serviço WCF.
Abra a aplicação App_DataGrid e na Solution Explorer selecione a "App_DataGrid.Web" e adicione um novo item do tipo Silverlight-enabled WCF Service e coloque o nome como "ServiceContato.svc”, conforme mostrado na Figura 01.

 

Figura 01 - Adicionando WCF Service na aplicação

O próximo passo é realizar uma busca no banco de dados utilizando a classe ContatoClassesDataContext criada no momento que adicionamos a classe LINQ To SQL. Você pode verificar o nome selecionando o arquivo ContatoClasses.dbml e abrir o painel properties.
Abra o arquivo ServiceContato.svc.cs, e adicione as namespaces e a implementação do método, conforme a Listagem 01.

using System;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.ServiceModel.Activation;

using System.Collections.Generic;

namespace App_DataGrid.Web

{

[ServiceContract(Namespace = "")]

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

public class ServiceContato

{

[OperationContract]

List<ListaContatoResult> ListaContato(string nome)

{

ContatoClassesDataContext db = new ContatoClassesDataContext();

var result = from b in db.ListaContato(nome)

select b;

return result.ToList();

}

}

}

Listagem 01 – Busca em banco de dados

 

Agora abra o arquivo Web.Config, e encontre a linha conforme mostrado na Listagem 02.

<service name="App_DataGrid.Web.ServiceContato">

<endpoint address="" binding="customBinding" bindingConfiguration="App_DataGrid.Web.ServiceContato.customBinding0"

contract="App_DataGrid.Web.ServiceContato" />

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

</service>

Listagem 02 – Configuração do Web.config

Modifique o atributo binding do endpoint para basicHttpBinding. A configuração deverá ficar conforme demonstrado na Listagem 03.

<service name="App_DataGrid.Web.ServiceContato">

<endpoint address="" binding="basicHttpBinding" contract="App_DataGrid.Web.ServiceContato" />

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

Listagem 03 – Modificação no Web.Config

Agora simplesmente execute sua aplicação e apenas feche o Browser.


No projeto Silverlight referencie o WCF. Para isso, em references com o botão direito-> Add Service Reference irá ser apresentada uma caixa de diálogo conforme Figura 02.

Figura 02 - Referenciando WCF no projeto Silverlight

Pressione o combobox Discover, selecione Services in Solution. Feito isso, irá aparecer em Services, o ServiceContato.svc.
Em Namespace coloque o nome de “Servico", e pressione OK.
Agora vá a MainPage.Xaml, e crie uma Interface com os controles conforme descrito na Listagem 04 e com a Interface similar à mostrada na Figura 03.

 

Controle

Content

Name

Button

Procurar

btnProcurar

TextBox

“”

txtProcurar

DataGrid

“” Não existe

gdGrid

Listagem 04 – Controles para design da Interface

 

Figura 03 – Interface da aplicação

Em Page.Xaml.cs, adicione o código, conforme a Listagem 05

 

namespace App_DataGrid

{

public partial class MainPage : UserControl

{

Servico.ServiceContatoClient oServico = new Servico.ServiceContatoClient();

public MainPage()

{

InitializeComponent();

btnProcurar.Click += new RoutedEventHandler(btnProcurar_Click);

}

void btnProcurar_Click(object sender, RoutedEventArgs e)

{

oServico.ListaContatoCompleted += new EventHandler<Servico.ListaContatoCompletedEventArgs>(oServico_ListaContatoCompleted);

btnProcurar.Click += new RoutedEventHandler(btnProcurar_Click);

oServico.ListaContatoAsync(txtProcurar.Text);

}

void oServico_ListaContatoCompleted(object sender, Servico.ListaContatoCompletedEventArgs e)

{

dtGrid.ItemsSource = e.Result;

}

}

}

Listagem 05- Código em C#

Observação: Eu inseri alguns dados na tabela TbContatos

 

Execute a aplicação.

Obrigada.

 

 


blog comments powered by Disqus

NewsLetter

Por favor preencher os campos.
Quer receber artigos?


Receber em HTML?