地基系列七 wpf_MVVM_007 修改表格中的一条数据

修改表格中的一行数据:
(1):声明一个类,获取当前选中行,将需要修改的字段回填到相应控件中。
(2):点击保存按钮后,获取用户修改后的数据。
(3):声明一个list,使用linq查询出当前行数据。
(4):将需要修改的字段,在list中替换。
(5):将list表中的字段,在数据库中替换。
例子:
(1):
public class myClass
{
public string 字段一{ get ; set ; }
public int? 字段二 { get ; set ; }
public double 字段三 { get ; set ; }
}
//获取表格当前选中行
myClass myRow = myDataGrid.CurrentItem as myClass;
//给控件赋值
myTextBox.Text = myRow.字段一.Trim();
myComboBox.SelectedValue = myRow.字段二;
myButton.Content = myRow.字段三;
(2):
private void btnUpdate_Click( object sender , RouteEventArgs e )
{
if ( myDataGrid.SelectedItem == null ) return;
//获取表格当前选中行
myClass myRow = myDataGrid.SelectedItem as myClass;
int my主键ID = Convert.ToInt32(myRow.主键ID);
var myTable = myModel.Table1.Where( p => p.主键ID == my主键ID ).SingleOrDefault();
if( myTable != null )
{
myTable.字段一 = Convert.ToString( myTextBox.Text );
myTable.字段二 = Convert.ToInt32( myComboBox.SelectedValue );
myTable.字段三 = Convert.ToDouble( myButton.Content );

			myModel.Entry( myTable ).State = System.Data.Entity.EntityState.Modified;
			if( myModel.SaveChanges() > 0 ) 
				Message.Show("修改成功");
			else 
				Message.Show("修改失败");
		}	
	}

备注:
【1】修改的字段,理应先验证再进行赋值给Table,字段的长度,与类型,需要与数据库中的一致。
【2】
接收由linq查询出一条需要修改的字段,可以使用Table来声明,而不是var:
Table1 myTable = myModel.Table1.Where( p => p.主键ID == my主键ID ).SingleOrDefault();
对比: var myTable = myModel.Table1.Where( p => p.主键ID == my主键ID ).SingleOrDefault();
【3】
两种获取表格当前行的情况:
点击表格内时,获取当前行:myDataGrid.CurrentItem;
选中表格一条数据,点击表格外的编辑按钮,获取当前行: myDataGrid.SelectedItem;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章