地基系列七 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;

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