2

ここで明らかな何かが欠けていない限り、DataGrid 内の 1 つまたは複数の行を無効にする方法はありません。DataGrid または List コンポーネントに disabledRows または disabledRowIndidices プロパティが必要ですが、存在しないようです。

mx_internal にスコープされ、データグリッド内のすべてのセルのすべての itemrenderer を含む "rendererArray" プロパティを見つけました。したがって、レンダラー内のデータの型と値を確認し、同じ行のすべてのセルを有効または無効にすることができますが、それはあまりにもハックのように感じます。

助言がありますか?

編集:行を無効にすることは、異なることを意味する可能性があることを認識しています。私の場合、データグリッドの編集可能なプロパティがtrueに設定されていても、行を編集できないことを意味します. ただし、行を選択できないことも意味しますが、それは私が探しているものではありません。

4

4 に答える 4

6

これを行うには、編集できないことを示すために、その行のデータが必要になります。次に、「itemEditBeginning」のときに、データまたは行のインデックスをチェックして、event.preventDefault..でデフォルトの動作を有効/無効にします。

public function preventEditing(event:DataGridEvent):void
{   
    var status : Boolean = ArrayObjs[rowIndex].isYourCondition;

    if (status == true)
    {
        event.preventDefault();
    }
}

もう1つのオプションは、データセル用にカスタムItemRendererを作成することですが、セルごとに作成する必要があるため、それが必要なものとは思わないでください。

于 2009-06-08T02:53:05.057 に答える
2

実際には、これは「itemEditBeginning」を介して行うのが最善です。優れたチュートリアルについては、こちらを参照してください:リンク テキスト

于 2009-03-10T18:56:39.410 に答える
0

次のような関数をDataGridの「itemEditBegin」に設定するだけです。

protected function validateEdition(event:DataGridEvent):void{
    if([EDITION CRITERA NOT MET]){
          event.preventDefault();
    }
}

<mx:DataGrid id="grid" itemEditBegin="validateEdition(event)" editable="true">
      <mx:columns>
         [[YOUR COLUMN CONFIGURATION]]
      </mx:columns>
</mx:DataGrid> 

event.preventDefault()は、DataGridがItemRendererをItemEditorに切り替えるのを停止し、基準を満たさない行のエディションを停止します。これを機能させるには、DataGridが編集可能である必要があります。

これでうまくいくはずです。

于 2010-01-13T19:15:42.830 に答える
0

Alex Harui は、こちら のソースで良い例を提供しています。これを行うための「組み込み」メソッドがないのは驚くべきことです。

于 2009-02-19T06:17:27.550 に答える