【问题标题】:Changed rows from List of objects?从对象列表更改行?
【发布时间】:2010-08-27 06:17:29
【问题描述】:

我有一个表格

  Table SelectedItems                Table AvailableItems
 RecordID  CheckBoxID                CheckBoxID     Description
    1           1                         1           'Tomatoes'
    1           2                         2           'Potatoes'   
    1           4                         3           'Mangoes' 
    2           1                         4           'Apples'  
    2           2     
  1. 现在我必须编辑 SelectedItems 对于 RecordID 1
  2. 为此我制作了一个复选框 列出并填充它 AvaialbeItems
  3. 然后我循环并检查了 RecordID 1 的选定项目
  4. 用户从 可用列表(连同旧列表, 他也可以取消选择一些)

现在我想更新选定的记录,问题是我只想知道要插入的新记录。

两个表都作为业务对象列表返回,如何比较列表并仅提取更改/新行?

请给我建议。我在 VSS 2005 上使用网络表单。

【问题讨论】:

    标签: c# asp.net business-objects


    【解决方案1】:

    当您选择记录时,您能否更新业务对象并弄脏它们?我的意思是创建一个类变量,作为一个标志,您可以检查它是更改还是新的。选择新行(或旧行)我认为会触发一个事件,您可以使用该事件来修改所选行的业务对象。

    然后,当您浏览列表时,您只需检查产生更改/新状态的业务对象标志。

    【讨论】:

    • 谢谢,这似乎是个好主意,我如何访问正在检查的行的业务对象?
    • 我不确定,但我怀疑当您选择一行时,您应该在某个可用于获取业务对象的事件中。因此,如果我选择一行,则会引发一个事件,我可以使用代码获取与该行关联的业务对象并对其进行标记。编辑:我面前没有我的 c# 编译器,这就是我不确定的原因。
    • 谢谢,过了一段时间我把它整理好了。我必须创建一个基类并在需要时继承它。但解决方案是基于您最初的建议。 =)
    【解决方案2】:

    如果系统已经在生产服务器上并且稳定运行,请忽略我的回答。如果它仍处于规划/设计/编程阶段,我认为稍微更改一下数据库可能会让一切变得更容易。

     Table SelectedItems 
    RecordID  CheckBoxID  IsSelected
        1           1        true
        1           2        true
        1           3        false
        1           4        true
    

    即对于某个RecordID和CheckBoxID,不需要查询表来查找是否有对应的记录(即被选中)。在新设计中,总是有这样一条记录,状态为IsSelected

    同时,这种设计也很容易在您的网页中进行维护。你改变的只是某一行的IsSelected值,你不需要关心“哦,我需要删除一行还是添加一行?” “这一行的数据是脏还是不脏?”……事情变得容易了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多