カスタムセルレンダラーを備えた非常に大きなデータグリッドがいくつかあります。私が直面している問題は、データ グリッドごとに各列に 1 つずつ、80 を超えるこれらがあることです。
これらを 1 つのグローバル セル レンダラーに縮小して、その列のセル レンダラーで何が許可されているかを定義するために変数を渡すことができる方法があるかどうか興味があります。
すなわち:
...
col1 = new DataGridColumn("PurchaseStartDate");
col1.headerText = "Purchase Date (YYYY-MM)";
dg.addColumn(col1);
col1.width = 110;
col1.editable = false;
col1.sortable = false;
col1.cellRenderer = Alternating_Row_Colours_editable36;
Alternating_Row_Colours_editable36._dg = dg;
Alternating_Row_Colours_editable36.__enabled = true;
Alternating_Row_Colours_editable36._myCol = 12;
Alternating_Row_Colours_editable36._isNum = 3;
Alternating_Row_Colours_editable36._stage = this;
Alternating_Row_Colours_editable36._maxChars = 9;
セル レンダラー内では、これらすべての変数を使用して、許可されているものをカスタマイズしています。すなわち:
...
public function Alternating_Row_Colours_editable36()
{
super();
if(_isNum == 0){
restrict = "a-z A-Z @_,.0-9//-";
maxChars = 64;
}else if (_isNum == 1){
restrict = ".0-9";
maxChars = 9;
}else if (_isNum == 2){
restrict = "0-9";
maxChars = 2;
}else if (_isNum == 3){
restrict = "0-9 \\-";
maxChars = 9;
}else if (_isNum == 4){
restrict = "0-9. %";
maxChars = 9;
}
if(_maxChars != -1){
maxChars = _maxChars;
}
上記の問題を見ると、エラーが発生したことに気付きました。「\-」の代わりに「//-」を使用してハイフンをエスケープしました。今では 80 以上の変更を加える必要があり、何か新しいものを追加しようとするたびに、コールバック、制限、最大文字、編集可能にする、入力をスクラブする、動的から入力に変更し、再び戻す...
クラスのインスタンスを作成し、そのセル レンダラーを使用する方法があるかどうか知りたいです。または、すべての列ではなく、その列のみに影響する変数を渡すことができます。私は最高ではありませんが、この目的の結果を得るために、使用する必要があるのは set/get 関数であるか、変数を保護、プライベート、または何かに変更する必要があるという印象を受けました。
これらの 80 以上のセル レンダラーを管理下に置く方法について、誰にでも提案があります。道を整理するためにそれらに変更を加える必要があることを楽しみにしていないので...
jc