バグを説明する
データグリッド:空のフィールドをクリックすると、PalaceholderがNaN.000に設定されます
再現するには
動作を再現する手順:
予想される行動
プレースホルダーに表示する必要があります
バージョン
4.530-ベータ-IDS
スクリーンショット
プラットホーム
すべての主要なブラウザとOS
追加のコンテキスト
該当なし
@ Jah25 datagridは少しおかしいので、たぶんあなたを正しい場所に向けるべき
フォーマッター:プレースホルダーとエディター:ここに数値を
https://github.com/infor-design/enterprise/blob/main/app/views/components/datagrid/example-placeholder.html#L71
これは最初の問題なので、最初は少し複雑かもしれません(私の側では申し訳ありません)。 しかし、 https://github.com/infor-design/enterprise/blob/main/src/components/datagrid/datagrid.js#L10434にある修正を見ることができ
coerveValue関数は、データをソース形式fx(この場合は数値)に戻そうとしています。 ここでNaNを除外しても安全だと思います。 だから多分NaNそれはただ空白を示しています
// coerced value may be coerced to empty string, null, or 0
if (coercedVal === undefined && Number.isNaN(value)) {
coercedVal = value;
}
それらの線に沿った何か。 しかし、ほんのヒントです。 この例にも少し奇妙なことに気付いたので、これをすばやく修正して先に進むかもしれません。
HTH
@tmcconechyちょっとティム私はちょうどこれを見ました。 ええ、それを見つけるのに少し追いかけましたが、強制が問題であることがわかりましたが、ここで強制がoldValueをチェックして、強制する必要のあるデータ型を決定しているところに出くわしました
https://github.com/infor-design/enterprise/blob/main/src/components/datagrid/datagrid.js#L10372
私の修正はこのようなものになるだろう
let isWord = /[A-Za-z!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]]/
...
else if (typeof oldVal === 'number' && value && isWord.test(value) ) {
newVal = Locale.parseNumber(value); // remove thousands sep , keep a number a number
}
完全な保護ではないと思いますが、さらにいくつかのエッジケースをカバーしています。変更または修正例を進めますか?
@ Jah25それはうまくいくはずだと思います。 やるだけやってみよう