C# 确定网格WPF MVVM的项目状态
在我的模型中有以下两种方法,“AddSelectedItemGrid”方法将向网格中添加选定项,“LoadDataGrid”将向网格中加载数据。我想添加一个新方法,将新添加的项目保存在网格中,但我不知道如何确定哪些项目是新添加或编辑的。如何获取行状态以确定需要保存哪些项目 模型 将项目添加到网格的步骤 从数据库加载网格 列表 公共列表ComputerDataGridListTest{get;set;}C# 确定网格WPF MVVM的项目状态,c#,wpf,mvvm,C#,Wpf,Mvvm,在我的模型中有以下两种方法,“AddSelectedItemGrid”方法将向网格中添加选定项,“LoadDataGrid”将向网格中加载数据。我想添加一个新方法,将新添加的项目保存在网格中,但我不知道如何确定哪些项目是新添加或编辑的。如何获取行状态以确定需要保存哪些项目 模型 将项目添加到网格的步骤 从数据库加载网格 列表 公共列表ComputerDataGridListTest{get;set;} 有几种方法可以满足您的需求。您可以保留添加到集合中的项目的记录。在MVVM中,我们处理数据,通
有几种方法可以满足您的需求。您可以保留添加到集合中的项目的记录。在MVVM中,我们处理数据,通常不需要操纵任何UI元素来发现以下内容:
public List<ComputerDataGridBO> ItemsToSave { get; set; }
public void AddSelectedItemGrid(object Parameter)
{
if (Parameter != null)
{
string test1 = ((Test.SharedLib.Data.testSubBO)(Parameter)).Term;
Int64 test2 = Convert.ToInt64(((testSubBO)(Parameter)).ComputerId);
ComputerDataGridBO newItem = new ComputerDataGridBO()
{
Term = test1,
ComputerId = test2
};
ItemsToSave.Add(newItem);
ComputerDataGridListTest.Add(newItem);
}
}
或者,您也可以使用连接到数据网格的处理程序来实现此功能,尽管这是实现此功能的一种不太MVVM的方法。无论哪种方式,您都可以使用LinQ
在保存更改的项目和新项目时查找它们:
List<ComputerDataGridBO> itemsToSave = new List<ComputerDataGridBO>(
ComputerDataGridListTest.Where(c => c.IsEdited));
if (itemsToSave != null)
{
// save items in itemsToSave and set their IsEdited properties to false
}
List itemsToSave=新列表(
其中(c=>c.IsEdited));
if(itemsToSave!=null)
{
//在itemsToSave中保存项目,并将其IsEdit属性设置为false
}
当然,有更复杂的方法可以做到这一点,但我猜你现在已经了解了全局。为什么不给ComputerDataGridBO添加一个布尔标志呢?你能提供一个例子吗?Sheridan似乎已经提供了一个例子!
class ComputerDataGridBO
{
public Int64 ComputerId { get; set; }
public string Term { get; set; }
}
public List<ComputerDataGridBO> ComputerDataGridListTest { get; set; }
public List<ComputerDataGridBO> ItemsToSave { get; set; }
public void AddSelectedItemGrid(object Parameter)
{
if (Parameter != null)
{
string test1 = ((Test.SharedLib.Data.testSubBO)(Parameter)).Term;
Int64 test2 = Convert.ToInt64(((testSubBO)(Parameter)).ComputerId);
ComputerDataGridBO newItem = new ComputerDataGridBO()
{
Term = test1,
ComputerId = test2
};
ItemsToSave.Add(newItem);
ComputerDataGridListTest.Add(newItem);
}
}
public bool IsEdited { get; set; }
public string Term
{
get { return term; }
set { term = value; IsEdited = true; } // Do for each property
}
List<ComputerDataGridBO> itemsToSave = new List<ComputerDataGridBO>(
ComputerDataGridListTest.Where(c => c.IsEdited));
if (itemsToSave != null)
{
// save items in itemsToSave and set their IsEdited properties to false
}