Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En el Entity Data Mode (EDM), la aplicación de enlace de datos de AdventureWorks incluye dos controladores de eventos que cargan y modifican datos. El código que carga un SalesOrderHeader y sus entidades SalesOrderDetail asociadas se ejecutan cuando el usuario hace clic en buttonGetHeader. Las modificaciones realizadas en los datos contenidos en una entidad SalesOrderDetail se envían en el controlador de eventos de la cuadrícula de detalles del pedido cellEndEdit.
Código de la aplicación
A continuación, se muestra el código del formulario principal de Windows de la aplicación de enlace de datos de AdventureWorks:
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);
}
}
}
Vea también
Conceptos
Adventure Works Data Binding (aplicación de ejemplo de EDM)
Formulario Add SalesOrderDetail del ejemplo AdventureWorks Data Binding (aplicación de ejemplo de EDM)