//完成新建记录后,需要修改 DBClass 当前主表记录中所有与从表的关联字段,不然不能正确地显示从表的内容 public void SetNewValue(CustomProperty prop) { DBCustomClass cls = prop.Parent as DBCustomClass; //if (cls != null) //{ // cls.MarkValueChanged(); //} foreach (string key in m_newvalue.Keys) //获取所有的主表字段名 { CustomProperty dbprop = null; if (key.ToLower() == prop.ID.ToLower()) { dbprop = prop; } else { dbprop = cls[key]; } if (dbprop != null) { dbprop.SetValue(GetNewValue(key)); cls.OnAsynNotifyEvent(2, dbprop); } } //当前字段不是关联字段,可能是顶层虚拟字段或者其他虚拟字段,需要重新载入当前 if (m_dbclass != null && m_dbclass.PrimaryKey.Length > 1) { object[] keyvalues = new object[m_dbclass.PrimaryKey.Length]; Hashtable htkeyvalue = Helper.TransHashTableCase(m_keyvalue, true); for (int i = 0; i < m_dbclass.PrimaryKey.Length; i++) { keyvalues[i] = htkeyvalue[m_dbclass.PrimaryKey[i]]; } m_dbclass.ReloadDBData(keyvalues); } else if (m_dbclass != null && m_dbclass.PrimaryKey.Length == 1) { DBCustomClass dbParent = prop.Parent as DBCustomClass; if (dbParent != null) { if (m_dbclass.PrimaryKey.Length == dbParent.FindKeys.Length) { m_dbclass.ReloadDBData(dbParent.FindKeys); } else { object[] keyvalues = new object[m_dbclass.PrimaryKey.Length]; Hashtable htkeyvalue = Helper.TransHashTableCase(m_keyvalue, true); for (int i = 0; i < m_dbclass.PrimaryKey.Length; i++) { keyvalues[i] = htkeyvalue[m_dbclass.PrimaryKey[i]]; } m_dbclass.ReloadDBData(keyvalues); } } } cls.OnAsynNotifyEvent(1, null); }