Buscar

Para popular o DataGrid, um método específico foi implementado (Resolução 8.23), semelhante ao processo anteriormente apresentado para a janela de ...

Para popular o DataGrid, um método específico foi implementado (Resolução 8.23), semelhante ao processo anteriormente apresentado para a janela de estados. Entretanto, nas tags XAML para o DataGrid, a propriedade ItemsSource agora é definida com o valor {Binding}, indicando que ela estará ligada a outros controles. Resolução 8.23: método que seleciona as cidades que serão exibidas no DataGrid private IList GetCidades() { using (var context = new EFContext()) { var query = ( from c in context.Cidades orderby c.Nome select new { c.Id, c.Estado, c.Nome }); return query.ToList(); } } Na implementação do método GetCidades(), um tipo anônimo é criado na seleção dos campos que serão retornados. Para o caso de c.Estado, é preciso alterar o método ToString() da classe Estado, para que o nome do estado seja exibido. Veja a seguir. Resolução 8.24: classe de negócio Estado (Versão 3) public class Estado { public long Id { get; set; } public string UF { get; set; } public string Nome { get; set; } public virtual List Cidades { get; set; } public override string ToString() { return this.Nome; } } O seguinte passo é invocar o método GetCidades() para popular e atualizar o DataGrid. Veja o código na sequência. Resolução 8.25: método que atualiza DataGrid private void RefreshDataGrid() { dgCidades.ItemsSource = GetCidades(); } A chamada ao método RefreshDataGrid() ocorre em dois pontos: no construtor (Resolução 8.26) e no método que captura o evento Click do botão Gravar (Resolução 8.27). Resolução 8.26: método construtor com chamada ao método RefreshDataGrid() public partial class Cidades : Window { public Cidades() { InitializeComponent(); PopulateComboBoxEstados(); RefreshDataGrid(); } // Código omitido } Resolução 8.27: método que captura o evento Click do botão Gravar com chamada ao método RefreshDataGrid() private void btnGravar_Click(object sender, RoutedEventArgs e) { var cidade = SaveCidade(new Cidade() { EstadoId = (long) cbxEstados.SelectedValue, Nome = txtNome.Text }); txtID.Text = cidade.Id.ToString(); RefreshDataGrid(); } Na sequência, é preciso implementar a funcionalidade para o botão de alteração de uma cidade. Veja a seguir. Resolução 8.32: método para atualização de uma cidade private void UpdateCidade(Cidade cidade) { using (var context = new EFContext()) { var newCidade = context.Cidades.Find(cidade.Id); newCidade.Nome = cidade.Nome; newCidade.EstadoId = cidade.EstadoId; context.SaveChanges(); } } Veja no código do método UpdateCidade() que uma cidade é recuperada; nela são atualizadas as propriedades e não há nenhuma chamada a algum método para atualizar a nova cidade. Essa atualização é feita de maneira automática pelo EF, pois o objeto alterado pertence ao contexto com a base de dados. A chamada a esse método é realizada no método que captura o evento Click do botão Alterar. Veja o código a seguir. Resolução 8.33: método que captura o evento Click do botão Alterar private void btnAlterar_Click(object sender, RoutedEventArgs e) { UpdateCidade(new Cidade() { Id = Convert.ToInt64(txtID.Text), Nome = txtNome.Text, EstadoId = (long) cbxEstados.SelectedValue }); RefreshDataGrid(); }

Essa pergunta também está no material:

C e Visual Studio Desenvolvimento de aplicacoes desktop

Português Escola Colegio Estadual Barao Do Rio BrancoEscola Colegio Estadual Barao Do Rio Branco

Respostas

User badge image

Ed Verified user icon

Não há uma pergunta clara na sua descrição. Por favor, reformule sua pergunta para que eu possa ajudá-lo.

0
Dislike0

Responda

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Mais conteúdos dessa disciplina