diff --git a/kernel/av/av.go b/kernel/av/av.go index 8e4f8d37d..1578718bc 100644 --- a/kernel/av/av.go +++ b/kernel/av/av.go @@ -275,8 +275,26 @@ func SaveAttributeView(av *AttributeView) (err error) { } for _, v := range kv.Values { - if "" == v.KeyID { - v.KeyID = kv.Key.ID + if "" == kv.Key.ID { + kv.Key.ID = ast.NewNodeID() + for _, val := range kv.Values { + val.KeyID = kv.Key.ID + } + if "" == v.KeyID { + v.KeyID = kv.Key.ID + } + + for _, view := range av.Views { + switch view.LayoutType { + case LayoutTypeTable: + for _, column := range view.Table.Columns { + if "" == column.ID { + column.ID = kv.Key.ID + break + } + } + } + } } } } diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index a89c0c19f..e0938e169 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -49,7 +49,7 @@ func SearchAttributeViewNonRelationKey(avID, keyword string) (ret []*av.Key) { } for _, keyValues := range attrView.KeyValues { - if av.KeyTypeRelation != keyValues.Key.Type { + if av.KeyTypeRelation != keyValues.Key.Type && av.KeyTypeRollup != keyValues.Key.Type { if strings.Contains(strings.ToLower(keyValues.Key.Name), strings.ToLower(keyword)) { ret = append(ret, keyValues.Key) }