0

ActionScript 3/Flex 4 で AdvancedDataGrid を使用しています。グリッドには、発信者の意図、ラベル、戦略、確認モード、確認プロンプトの 5 つの列があります。ラベルを除くすべての列が編集可能です。ただし、確認モードの値を NEVER に変更すると、次の列の確認プロンプトは編集不可になり、値「n/a」が設定されます (これは目的の機能です)。

問題の画面

残念ながら、画像は鮮明ではありません。2 行目では、確認モードの値を NEVER に変更しました。確認モード セルからタブ移動を開始すると、次のようになります。焦点が合っているものは何も見えません。2 番目のタブ: ビュー スタックの左から 5 番目のタブ (濃い灰色) がフォーカスされています。3 番目のタブ: 焦点が合っていません。4 番目のタブ: 緑色の「+」が付いたボタン (左上) がフォーカスされています。5 番目のタブ: グリッド自体にフォーカスがあります。6 番目のタブ: 最後に、次の行の Caller Intent セルに移動します (この画像がキャプチャされたとき)。

ボタンに tabEnabled="false" と tabFocusEnabled="false" を設定してみました。AdvancedDataGrid には tabFocusEnabled="false" のみを設定します。しかしその後、タブのフォーカスが右上のパネルと右下のパネルのコンポーネントに移動し始めます。

2 つのことを達成する必要があります。1. グリッド、右上のパネル、および右下のパネルにタブを含めます。つまり、タブ移動はある領域から別の領域にまたがってはなりません。2. 編集不可のフィールドを使用して、通常のタブ移動の動作を台無しにしないようにします。

4

2 に答える 2

0

私は AdvancedDataGrid に関して多くのフォーカス作業を行いました。http://squaredi.blogspot.com/2011/04/taming-beast-advanceddatagrid.htmlおよびhttp://squaredi.blogspot.com/2011/04/taming-beast-advanceddatagrid-code.htmlで私のプレゼンテーションを ご覧ください。

これらの例がニーズに近づくかどうかを確認する

于 2011-07-06T17:23:48.307 に答える
0

簡単な解決策: ENTER を使用してグリッドを下に横切ります。

複雑な解決策:イベント リスナーの組み合わせと、他の列のロック/ロック解除を使用します。

MXML ファイル内で、DataGridColumn を編集 (またはコードで編集) して、セットアップを行うことができます。

<mx:DataGridColumn ... id='col1' editable='false' ... />

これは機能しないとあなたが言ったことは知っていますが、ユーザーが列を選択し、他のすべての列をロックアウトして編集不可にすることができます (コード + DataGridColumn の id を使用)。その結果、すべてのタブ イベントが「1 ステップ ダウン」します。ただし、すべての編集がキャンセルされた場合は、終了する編集イベントを必ずキャッチしてください。他のすべての列を「ロック解除」します。概念実証として、編集可能な列が 1 つだけのテーブルを作成してみてください

イベントリスナーを使用して、編集の開始と終了をインターセプトします (したがって、それを無視します / など)

//...
datagrid.addEventListner( DataGridEvent.ITEM_EDIT_END, editEvent );
function editEvent( e.DataGridEvent ):void {
    if(e.reason == DataGridEventReason.CANCELLED) {
        e.preventDefault();
    }

    if(e.dataField == 'collumn name i dun want to edit') {
        e.preventDefault();
    }
    //...
    //CODE TO LOCK / UNLOCK EDIT IN OTHER COLLUMNS
    //...
    //you may want to add an ignore, if both before / after values are the same
    //If you really need that code : i can dig it up (just let me know)
}

このようにして、ENTER キーを入力することで、グリッドを下に横切ることができます。(必要のない編集は無視します)。そして、他のグリッドをロックアウトするために必要なイベントをキャッチします。

于 2011-06-11T13:30:17.510 に答える