列表页面间传值:如何为已有QMSRejection对象添加Remarks字段
解决方法:修改已有对象属性而非新增对象
你现在遇到的问题核心是:你新建了一个全新的QMSRejection实例并添加到列表,而不是直接修改从第一页传递过来的那个已有对象。
问题根源
你当前的代码逻辑是创建新对象再追加到列表,自然会新增一项:
var rej = new QMSRejection(); rej.Remarks = ent3.Text.ToString(); DataToSave.add(rej);
但你真正需要的是找到列表里已存在的那个对象,直接修改它的Remarks属性。
正确实现方式
从第一页传递过来的DataToSave列表里已经包含了一个QMSRejection对象(就是你在firstpage.xaml.cs中创建并添加的那个),你只需要获取这个已有对象并赋值即可:
// 获取列表中已有的QMSRejection对象(这里假设列表仅包含一个对象,用FirstOrDefault) var existingRejection = DataToSave.FirstOrDefault(); if (existingRejection != null) { // 直接给已有对象的Remarks属性赋值 existingRejection.Remarks = ent3.Text.ToString(); }
为什么这样有效?
QMSRejection是引用类型,当你在第二页接收DataToSave列表时,列表里的对象和第一页创建的对象指向同一个内存地址。修改这个对象的属性会直接作用于原对象,完全不需要新增列表项。
如果后续你的列表可能包含多个QMSRejection对象,可以通过对象的唯一标识(比如Date、Grade)定位目标对象,例如:
// 根据Grade和Date定位需要修改的对象 var targetRejection = DataToSave.FirstOrDefault(r => r.Grade == GradeID && r.Date == DateTime.Now.ToShortDateString()); if (targetRejection != null) { targetRejection.Remarks = ent3.Text.ToString(); }
内容的提问来源于stack exchange,提问作者Dhruv Kinger
相关产品推荐
相关产品推荐

