Code de l'exemple d'application AdventureWorks Data Binding (Exemple d'application EDM)
Dans le modèle EDM (Entity Data Model), l'application de liaison de données AdventureWorks Data Binding inclut deux gestionnaires d'événements qui chargent et modifient des données. Le code qui charge un SalesOrderHeader et ses entités SalesOrderDetail associées s'exécute lorsque l'utilisateur clique sur buttonGetHeader
. Les modifications apportées aux données d'une entité SalesOrderDetail sont soumises dans le gestionnaire d'événements de la grille des détails de commande cellEndEdit
.
Code de l'application
Le code du Windows Form principal utilisé dans l'application de liaison de données AdventureWorks Data Binding est illustré ici :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AdventureWorksModel;
using System.Data.Objects;
namespace AdWksSalesWinDataBind
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
objCtx = new AdventureWorksEntities();
}
private void buttonGetHeader_Click(object sender, EventArgs e)
{
if (textBoxOrderId.Text.Equals(""))
{
MessageBox.Show("Add Sales Order Header Number",
"No Header Number");
return;
}
ObjectParameter parameter =
new ObjectParameter("p", Int32.Parse(textBoxOrderId.Text));
dataGridViewSOHeader.DataSource = objCtx.SalesOrderHeader.Where(
"it.SalesOrderID == @p", parameter).Execute(MergeOption.OverwriteChanges);
if(objCtx.SalesOrderHeader.Where(
"it.SalesOrderID == @p", parameter).Any())
{
SalesOrderHeader resultHeader =
objCtx.SalesOrderHeader.Where(
"it.SalesOrderID == @p", parameter).First();
resultHeader.SalesOrderDetail.Load();
dataGridViewOrderDetails.DataSource = resultHeader.SalesOrderDetail;
}
else
MessageBox.Show(
"No Sales Order Header matches this key",
"No Match");
}
private void Form1_FormClosing(object sender,
FormClosingEventArgs e)
{
objCtx.Connection.Close();
objCtx.Dispose();
}
private void dataGridViewSOHeader_CellEndEdit(object sender,
DataGridViewCellEventArgs e)
{
objCtx.SaveChanges();
}
private void dataGridViewOrderDetails_CellEndEdit(object sender,
DataGridViewCellEventArgs e)
{
objCtx.SaveChanges();
ObjectParameter parameter =
new ObjectParameter("p", Int32.Parse(textBoxOrderId.Text));
SalesOrderHeader header =
objCtx.SalesOrderHeader.Where(
"it.SalesOrderID == @p", parameter).FirstOrDefault();
// Refresh the SalesOrderHeader in the grid.
objCtx.Refresh(RefreshMode.StoreWins, header);
}
private void buttonAddSalesOrder_Click(object sender, EventArgs e)
{
FormAddSalesOrderDetail formAddSODetail = new FormAddSalesOrderDetail(objCtx);
DialogResult dlgResult = formAddSODetail.ShowDialog(this);
if(dlgResult.Equals(DialogResult.OK))
{
ObjectParameter parameter =
new ObjectParameter("p", Int32.Parse(textBoxOrderId.Text));
SalesOrderHeader header =
objCtx.SalesOrderHeader.Where(
"it.SalesOrderID == @p", parameter).FirstOrDefault();
// Refresh the SalesOrderDetails in the grid.
buttonGetHeader_Click(null, null);
}
}
private void textBoxOrderId_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode.Equals(Keys.Return))
buttonGetHeader_Click(this, System.EventArgs.Empty);
}
}
}
Voir aussi
Concepts
Adventure Works Data Binding (Exemple d'application EDM)
Exemple Ajout du formulaire SalesOrderDetail dans Adventure Works Data Binding (Exemple d'application EDM)