从对象列表中更改了行?

时间:2010-08-27 06:17:30

标签: c# asp.net business-objects

我有一个表格

  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. 为此我制作了一个CheckBox 列出并填充它 AvaialbeItems
  3. 然后我循环检查了一下 RecordID 1的SelectedItems
  4. 用户从中选择一些新行 可用清单(以及旧的, 他也可以取消选择一些)
  5. 现在我想更新选定的记录,问题是我只想知道要插入的新记录。

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

    请指教。我在VSS 2005上使用webforms。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

也就是说,对于某个RecordID和CheckBoxID,您不需要查询该表以查找是否存在相应的记录(这意味着它已被选中)。在新设计中,始终存在这样的记录,状态为IsSelected

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