Я пишу CRUD-код для WPF Datagrid.
В методе TheDataGrid_CellEditEnding ниже:
- как получить исходный текст до того, как пользователь внес изменение?
- Мне нужен оригинальный текст, чтобы сменить клиента и сохранить его обратно в базу данных с помощью _db.SubmitChanges ()
Вот полное решение с базой данных, если кто-то хочет поэкспериментировать с этим:
http://www.tanguay.info/web/download/testDataGrid566northwindDatagrid.zip
XAML:
<toolkit:DataGrid x:Name="TheDataGrid"
AutoGenerateColumns="True"
CellEditEnding="TheDataGrid_CellEditEnding"/>
код-за:
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();
}