{"record":{"id":"894ca71be26d3adb","repo":"Unity-Technologies/UnityCsReference","slug":"the-maximum-number-of-sorted-columns-is-state-max","errorCode":null,"errorMessage":"The maximum number of sorted columns is {state.maximumNumberOfSortedColumns}. Trying to set {columnIndices.Length} columns.","messagePattern":"The maximum number of sorted columns is (.+?)\\. Trying to set (.+?) columns\\.","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Editor/Mono/GUI/TreeView/MultiColumnHeader.cs","lineNumber":81,"sourceCode":"        public MultiColumnHeader(MultiColumnHeaderState state)\n        {\n            m_State = state;\n            m_HeaderButtonsControlID = GUIUtility.GetPermanentControlID();\n        }\n\n        public void SetSortingColumns(int[] columnIndices, bool[] sortAscending)\n        {\n            if (columnIndices == null)\n                throw new ArgumentNullException(\"columnIndices\");\n\n            if (sortAscending == null)\n                throw new ArgumentNullException(\"sortAscending\");\n\n            if (columnIndices.Length != sortAscending.Length)\n                throw new ArgumentException(\"Input arrays should have same length\");\n\n            if (columnIndices.Length > state.maximumNumberOfSortedColumns)\n                throw new ArgumentException(\"The maximum number of sorted columns is \" + state.maximumNumberOfSortedColumns + \". Trying to set \" + columnIndices.Length + \" columns.\");\n\n            if (columnIndices.Length != columnIndices.DistinctCount())\n                throw new ArgumentException(\"Duplicate column indices are not allowed\", \"columnIndices\");\n\n            bool changed = false;\n\n            if (!columnIndices.AsSpan().SequenceEqual(state.sortedColumns))\n            {\n                state.sortedColumns = columnIndices;\n                changed = true;\n            }\n\n            for (int i = 0; i < columnIndices.Length; ++i)\n            {\n                var column = GetColumn(columnIndices[i]);\n                if (column.sortedAscending != sortAscending[i])\n                {\n                    column.sortedAscending = sortAscending[i];","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/GUI/TreeView/MultiColumnHeader.cs#L63-L99","documentation":"Thrown by SetSortingColumns when the number of sorted columns exceeds state.maximumNumberOfSortedColumns. The header only supports a bounded number of simultaneous sort keys for performance and display reasons.","triggerScenarios":"Passing more sort columns than maximumNumberOfSortedColumns (typically 3); restoring a saved sort configuration that was created with a higher limit.","commonSituations":"Changing maximumNumberOfSortedColumns to a lower value but retaining old persisted sort state; a feature that adds multi-level sorting beyond the configured cap.","solutions":["Limit the sort columns to the first N where N <= state.maximumNumberOfSortedColumns.","Raise maximumNumberOfSortedColumns if the use case genuinely needs more sort keys.","Validate against the cap before persisting user sort preferences."],"exampleFix":"// before\nheader.SetSortingColumns(cols, flags); // cols.Length > max\n\n// after\nint max = header.state.maximumNumberOfSortedColumns;\nheader.SetSortingColumns(cols.Take(max).ToArray(), flags.Take(max).ToArray());","handlingStrategy":"validation","validationCode":"int max = header.state.maximumNumberOfSortedColumns; var cappedCols = columnIndices.Take(max).ToArray(); var cappedFlags = sortAscending.Take(max).ToArray();","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Read maximumNumberOfSortedColumns before building the sort arrays.","Persist sort state only after validating against the current cap.","Document the cap to users in the multi-sort UI."],"tags":["unity-editor","treeview","multicolumn","limit"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}