diff --git a/kernel/av/sort.go b/kernel/av/sort.go index bef537865..97ccb1156 100644 --- a/kernel/av/sort.go +++ b/kernel/av/sort.go @@ -119,13 +119,19 @@ func (value *Value) Compare(other *Value, attrView *AttributeView) int { return 0 } case KeyTypeSelect, KeyTypeMSelect: - if 0 < len(value.MSelect) && 0 < len(other.MSelect) { - v1 := value.MSelect[0].Content - v2 := other.MSelect[0].Content - if v1 == v2 { - return 0 + if nil != value.MSelect && nil != other.MSelect { + var v1 string + for _, v := range value.MSelect { + v1 += v.Content + break + } + var v2 string + for _, v := range other.MSelect { + v2 += v.Content + break } + // 按设置的选项顺序排序 key, _ := attrView.GetKey(value.KeyID) if nil != key { optionSort := map[string]int{} diff --git a/kernel/av/table.go b/kernel/av/table.go index fb7afc849..a5d8dc3d0 100644 --- a/kernel/av/table.go +++ b/kernel/av/table.go @@ -213,13 +213,17 @@ func (table *Table) SortRows(attrView *AttributeView) { sorted := true for _, colIndexSort := range colIndexSorts { val1 := editedRows[i].Cells[colIndexSort.Index].Value - if nil == val1 { - return colIndexSort.Order == SortOrderAsc - } - val2 := editedRows[j].Cells[colIndexSort.Index].Value - if nil == val2 { - return colIndexSort.Order != SortOrderAsc + if nil == val1 || val1.IsEmpty() { + if nil != val2 && !val2.IsEmpty() { + return false + } + sorted = false + continue + } else { + if nil == val2 || val2.IsEmpty() { + return true + } } result := val1.Compare(val2, attrView)