你好,
常見的請求是在表格框列上方建立搜尋欄,類似於在其他視覺化軟體中所做的。
目的是能夠非常輕鬆地使用不同的過濾器來過濾資料表。
例如,在下面的範例中,如果我在“驗證狀態”列頂部的搜尋框中輸入“Pend”,在“分發確認”列頂部的搜尋框中輸入“Yes”,它將根據這兩個篩選器過濾表格:驗證狀態包含“Pend”且另一列包含“yes”的每一行。
我知道我們可以使用資料過濾器,而且我問的實際上是關於 JSL 腳本,但是有沒有人有同樣的請求並成功概括出生成這種表格框的功能?

這已經是 JMP 願望清單中的一項了。您可以點擊此處查看
創建類似這樣的基礎版本並不太複雜,但創建一個健壯且美觀的版本很可能會有些複雜。下面的範例是基礎的。
看更多...
Names Default To Here(1);
filter_tablebox = function({tb, options},
aa = Associative Array(tb << get names, options << get text);
filter_expr = {};
For Each({{colname, filter_text}}, aa,
If(Is Missing(filter_text),
continue(); // skip over
);
Insert Into(filter_expr, EvalExpr(Contains(Lowercase(Expr(As Name(colname))), Expr(filter_text))));
);
If(N Items(filter_expr) == 0,
tb << Reset Filter;
return(1);
);
If(N Items(filter_expr) == 1,
filter_expr = filter_expr[1];
,
Substitute Into(filter_expr, Expr(List()), Expr(And()));
);
Eval(EvalExpr(tb << Filter Where(Expr(Name Expr(filter_expr)))));
return(1);
);
nw = New Window("Example",
ob = Outline Box("Table",
V List Box(
hlb = H List Box(
Text Edit Box("", << Set Script(filter_tablebox(tb1, hlb << XPath("//TextEditBox"))), << Set Width(51)),
Text Edit Box("", << Set Script(filter_tablebox(tb1, hlb << XPath("//TextEditBox"))), << Set Width(80)),
),
tb1 = Table Box(
String Col Box("Mountain", {"K2", "Delphi", "Kilimanjaro", "Grand Teton"}),
String Col Box("TEST", {"x", "y", "z", "a"})
)
)
)
);
非常感謝,就是這個!基礎版已經解決了我的問題,完美!
如果表格框使用資料表列框,它似乎不再支援“篩選位置”,這會阻止您使用此功能。使用資料錶框的理由是什麼?您是否希望擁有與原始表格或其他表格關聯的行選擇功能?
只是,使用資料錶框時,我直接擁有資料表,而使用表格框時,我必須將表格轉換為表格框。我確實嘗試過調整你的資料表腳本,但卡在了過濾器上,不知道是不是我操作錯了。
您可以使用<<取得報表將資料表轉換為表格框(沒有花俏的資料表列框)
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(4),
Compress File When Saved(1),
New Column("Mountain",
Character,
"Nominal",
Set Values({"K2", "Delphi", "Kilimanjaro", "Grand Teton"})
),
New Column("TEST", Character, "Nominal", Set Values({"x", "y", "z", "a"}))
);
filter_tablebox = function({tb, options},
aa = Associative Array(tb << get names, options << get text);
filter_expr = {};
For Each({{colname, filter_text}}, aa,
If(Is Missing(filter_text),
continue(); // skip over
);
Insert Into(filter_expr, EvalExpr(Contains(Lowercase(Expr(As Name(colname))), Expr(filter_text))));
);
If(N Items(filter_expr) == 0,
tb << Reset Filter;
return(1);
);
If(N Items(filter_expr) == 1,
filter_expr = filter_expr[1];
,
Substitute Into(filter_expr, Expr(List()), Expr(And()));
);
Eval(EvalExpr(tb << Filter Where(Expr(Name Expr(filter_expr)))));
return(1);
);
nw = New Window("Example",
ob = Outline Box("Table",
V List Box(
hlb = H List Box(
Text Edit Box("", << Set Script(filter_tablebox(tb1, hlb << XPath("//TextEditBox"))), << Set Width(80)),
Text Edit Box("", << Set Script(filter_tablebox(tb1, hlb << XPath("//TextEditBox"))), << Set Width(51)),
),
rep = dt << get as report; // repo is border box and under it is table box
)
)
);
tb1 = rep << child;
rep << Left (0);
rep << Top(0);
rep << Bottom(0);
非常感謝 !!!!! 我不知道轉換起來竟然如此簡單,只需獲取報告即可!