Implem / Implem.Pleasanter

Pleasanter is a no-code/low-code development platform that runs on .NET. You can quickly create business applications with simple operations.
https://pleasanter.org
GNU Affero General Public License v3.0
511 stars 81 forks source link

ColumnFilterHashプロパティで リンク先テーブルの列をフィルタしたい。 #507

Closed kenichi-fk closed 6 months ago

kenichi-fk commented 6 months ago

API JSONデータのViewプロパティにおける ColumnFilterHashプロパティでは、自テーブルの列のみ指定可能だと思います。

GridColumnsプロパティで "ClassA~11,ClassB" と指定できるように、リンク先テーブルの列でフィルタできるようになりませんか?

kenichi-fk commented 6 months ago

自己解決しました。

データベースのSitesテーブルにある、該当テーブルのSiteSettings列にテーブル設定情報がありますが、この中の事前に定義したViewsプロパティのJSONをそのまま使えば、リンク先テーブルの列でフィルタ出来ることを確認しました。

    "GridColumns": [
        "DateA", 
        "ClassA~11,ClassD",  //●
        "ClassA~11-ClassA~912,ClassA", 
        "ClassA~11-ClassA~912,ClassB", 
        "ClassA",
        "ClassA~11,ClassE",
        "NumA", 
    ],
    "ColumnFilterHash": {
        "ClassA~11-ClassD~1390,ClassA": "D"  //●
    },

うまくフィルタが効かなかった原因は、GridColumnsで表示させる列と、ColumnFilterHashでフィルタさせる列の指定方法が異なったためでした。

上記のコードで、列(●) は実質同じ列です。 この同一の列 "ClassA\~11,ClassD" と "ClassA\~11-ClassD\~1390,ClassA" において、 GridColumnsプロパティ に "ClassA\~11-ClassD\~1390,ClassA" と指定しても正常に表示されますが、 逆に、ColumnFilterHashプロパティ に "ClassA\~11,ClassD" と指定するとフィルタは働きません。

同じ列でも、プロパティによってリンクの指定方法に制限があるんでしょうね。