在通用列表中保存更新的对象

时间:2010-08-30 07:59:04

标签: c# asp.net business-objects

我正在努力更新List<>中的业务对象。

我正在使用复选框列表

  1. 单击复选框列表项时
  2. 我检查是否存在,如果是,我将其标记为Dirty(表示用户取消选中项目)
  3. 如果没有,我会在列表中添加一个新项目(表示用户点击一个新项目) 并将其存储在视图状态

    如何使用脏对象更新通用列表? 在表单更新时,我是否预先制作了单独的脏对象和新对象列表以发送到DB层,或者您是否会推荐其他方式?

  4. 这是我的代码,抱歉我只是一个错误的逻辑启动器=(

    protected void cblExclusions_SelectedIndexChanged(object sender, EventArgs e)
    {
       if (cblExclusions.SelectedIndex != -1)
        {
            ftExclusions myExclusion=new ftExclusions();  // Business object
            ftExclusionsList myExclusionList=new ftExclusionsList();   // Business Obj. List
            int excId = Convert.ToInt32(cblExclusions.SelectedValue.ToString()); // value of checkbox list item which is clicked
            ftExclusionsList tempList = (ftExclusionsList)ViewState["ftExclusionList"];
    
            ftExclusions isExist =tempList.Find(delegate(ftExclusions tmpExclusion)
                {
                    return (tmpExclusion.excluId == excId);
                });
    
            if (isExist != null)
            {
                isExist.isDirtyExclusion(); // Mark as dirty
                tempList.  // stuck here I don't grasp how to save this back to the list 
            }
            else
            {
                myExclusion = new ftExclusions();
                myExclusion.excluId = excId;
                myExclusion.fTrtID = Convert.ToInt32(lblTreatyNo.Text);
                myExclusion.ftExcluId = -1;     //new record
                myExclusion.isNewExclusion();   // Mark as new
                tempList.Add(myExclusion);
            }
            ViewState["ftExclusionList"] = tempList;                
    
        }
    }
    

1 个答案:

答案 0 :(得分:1)

您无需将其保存回列表。假设ftExclusions是class而不是struct,它总是通过引用传递。这意味着tempListisExist都包含对同一对象的引用。从两个地方都可以看到对象的任何变化。