如何在不改变数据表中字段的实际顺序的情况下正确排列列切换器中的选项顺序?
在提供的 JSL 中,简单地对列表进行排序不会影响列切换器中选项的顺序。
我注意到,有时 DataTable 中列的实际顺序会影响列切换器中选项的顺序,但有时则不会(我不知道原因)。但是,当处理包含许多列的 DataTable 时,更改列的顺序非常耗时,而且似乎毫无意义。有没有办法在不改变实际列顺序的情况下,实现列切换器中选项所需的排序?
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column( "Column 0", formula( :weight+1 ) );
dt << New Column( "Column 14", formula( :weight+2 ) );
dt << New Column( "Column 3", formula( :weight+3 ) );
dt << New Column( "Column 2", formula( :weight+4 ) );
dt << New Column( "Column 11", formula( :weight+5) );
dt << New Column( "Column 1", formula( :weight+6 ) );
dt << New Column( "Column ", formula( :weight+7 ) );
col = dt << get column names( string );
SwitchOption = {};
For Each( {value, index}, col,
If( Word( 2, value, " " ) != "",
SwitchOption = Insert( SwitchOption, col[index] )
)
);
//The column list before the order arrangement.
Graph = Graph Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Variables( X( :name ), Y( :Column 0 ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Graph << Column Switcher(
Column( "column 0" ),
SwitchOption,
Title( "Test" )
);
//The column list after the order arrangement.
orderedSwitchOption = {};
oder = {};
For Each( {value, index}, SwitchOption, oder = Insert( oder, Num( Word( 2, value, " " ) ) ) );
oder = Sort List( oder );
For Each( {value, index}, oder,
orderedSwitchOption = Insert( orderedSwitchOption, "Column " || Char( value ) )
);
Graph2 = Graph Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Variables( X( :name ), Y( :Column 0 ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
Graph2 << Column Switcher(
Column( "column 0" ),
orderedSwitchOption,
Title( "Ordered Column" )
);
我认为使用列切换器你要么必须依赖表的列顺序,要么必须依赖字母顺序

我不确定在这种情况下“原始顺序”是什么意思,因为当我们讨论 JMP 表中的列时,它可能有不同的含义

但我认为在列切换器的情况下它可能是“表格顺序”而不是原始顺序。
对于 JMP 表
使用 JMP > 输入和编辑数据 > 组织数据表中的数据 > 重新排列数据表中的列
原来的 命令
将列恢复到数据表上次保存时的顺序。