personalizar - wpf datagrid columns
¿Cómo hacer que este código CRUD funcione en WPF DataGrid? (2)
¿Por qué necesitas el texto original? ¿Es para mostrar algún mensaje informativo?
En su caso, parece que está vinculando la cuadrícula de datos a sus objetos LinqToSQL. Esto significa que el objeto del Cliente al que está asociada la fila ya está actualizado y todo lo que necesita hacer es llamar a SubmitChanges ().
Estoy escribiendo el código CRUD para WPF Datagrid.
En el método TheDataGrid_CellEditEnding a continuación:
- ¿Cómo obtengo el texto original antes de que el usuario realice el cambio?
- Necesito el texto original para poder cambiar el cliente y guardarlo en la base de datos con _db.SubmitChanges ()
Aquí está la solución completa con base de datos si alguien quiere experimentar con esto:
http://www.tanguay.info/web/download/testDataGrid566northwindDatagrid.zip
XAML:
<toolkit:DataGrid x:Name="TheDataGrid"
AutoGenerateColumns="True"
CellEditEnding="TheDataGrid_CellEditEnding"/>
código detrás:
private void TheDataGrid_CellEditEnding(object sender, Microsoft.Windows.Controls.DataGridCellEditEndingEventArgs e)
{
//get the original text
Customer customer = e.Row.Item as Customer;
string customerID = customer.CustomerID;
int displayIndex = (int)e.Column.DisplayIndex; // e.g. equals 4 when user edits the 5th column
//HOW TO I GET THE ORIGINAL TEXT? THERE IS NO FIELDS METHOD IN THE LINQ-TO-SQL CLASSES
string originalText = customer.Fields[displayIndex].value.ToString();
//get the changed text
TextBox changedTextBox = e.EditingElement as TextBox;
string changedText = changedTextBox.Text;
//inform user
Message.Text = String.Format("cell was changed from {0} to {1}", originalText, changedText);
//I NEED TO CHANGE THE CUSTOMER WITH THE ABOVE TEXT
//BEFORE I SAVE IT BACK HERE
_db.SubmitChanges();
}
Encontré las muestras en este blog muy útiles http://blogsprajeesh.blogspot.com/2009/03/blog-post.html
Explica la clasificación utilizando los eventos de colección y cuadrícula.