从集合中检索/更新对象的最有效方法?
我正在使用绑定到可观察集合的业务对象的silverlight数据网格。 我们不支持网格内对象的内联编辑,但我们确实为用户选择的行显示了相应的编辑面板。 当用户从此面板提交编辑时,我坚持在数据库中进行更改,但我希望更改也反映在网格中。从集合中检索/更新对象的最有效方法?
我知道通过使用可观察的集合和通知属性改变了如果我改变所选行被绑定的对象,这些改变将显示在网格中。
但是,由于我不是内联编辑,我需要搜索该对象的可观察集合并对可观察集合中的业务对象实例进行更改。
我想避免必须通过集合来查找所述对象,但我担心这是唯一真正的方法。 没有其他更有效率,更少性能的方式,我不知道从集合中检索对象是否正确?除了简单地循环直到我击中它?
您可以将编辑网格绑定到显示网格的选定项目吗?由于它们是引用,因此会将更改推送到可观察集合中,然后可以将其保留下来。
可能...我会给你一个镜头。 你可以绑定到多个单个选定的项目吗?绑定会更新所有行吗? – 2011-06-10 18:06:04
取决于您在数据网格上绑定的属性。有一个SelectedItem属性是一个DataGridrow,还有一个SelectedItems集合,它是datagridrows的集合。从那里你可以得到绑定的对象,如果需要的话。 – Bueller 2011-06-10 18:09:38
我们这样做的方式是编辑面板是完全动态的。它只是一个用户控件模板(标签+文本框,标签+ datetimepicker等)随时填充的列表框,因此我即时创建这些模板,我可以设置其文本框或datetimepicker的绑定,但那么我怎么绑定选定的行的对象?以某种方式将它绑定到包含所有控件的列表框? – 2011-06-10 18:23:02
在发生了一些严重的例外情况后,我无法跟踪我决定避免将数据绑定到编辑面板并按照Jeffrey L Whitledge的建议进行操作。 我维护对面板中显示的对象的引用,并通知更改,当我提交更新面板,我坚持对业务对象的更改,我设置更改为网格行对象界。
thx guys
如何填充编辑面板?你不能只是维护一个引用面板中显示的任何对象吗? – 2011-06-10 18:02:51
如果它与wpf类似,则将所编辑对象的字段绑定到编辑控件。 – 2011-06-10 18:03:18