代码之家  ›  专栏  ›  技术社区  ›  Zo Has

在常规列表中保存更新的对象

  •  0
  • Zo Has  · 技术社区  · 14 年前

    我正在努力更新列表中的业务对象<gt;。

    我正在使用复选框列表

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

      如何用脏对象更新通用列表? 在表单更新时,我是否要预先访问并单独列出要发送到DB层的脏对象和新对象,或者您是否建议其他方法?

    这是我的代码,对不起,我只是个初学者=(

    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 回复  |  直到 14 年前
        1
  •  1
  •   Alex Reitbort    14 年前

    您无需将其保存回列表。假设 ftExclusions 是类而不是结构,它始终通过引用传递。这意味着两者 tempList isExist 包含对同一对象的引用。在这两个地方都可以看到物体上的任何变化。