Отключить строки в Flex DataGrid - PullRequest
2 голосов
/ 16 февраля 2009

Если я не пропустил что-то очевидное здесь, нет способа отключить одну или несколько строк в DataGrid. Я ожидаю, что свойство disabledRows или disabledRowIndidices в компоненте DataGrid или List, но его, похоже, не существует.

Я обнаружил свойство "rendererArray", которое имеет область действия mx_internal и содержит все элементы элементов всех ячеек в сетке данных. Поэтому я могу проверить тип и значение данных внутри средства визуализации и включить или отключить все ячейки одной строки, но это слишком похоже на взлом.

Есть предложения?

Редактировать : Я понимаю, что отключение строки может означать разные вещи. В моем случае это означает невозможность редактировать строку, даже если для свойства editable таблицы данных установлено значение true. Однако это также может означать невозможность выбрать строку, но это не то, что я ищу.

Ответы [ 4 ]

6 голосов
/ 08 июня 2009

Для этого вам понадобятся некоторые данные для этой строки, чтобы указать, что она не редактируема. Затем, когда "itemEditBeginning", затем проверьте индекс данных или строки, чтобы включить / отключить поведение по умолчанию с помощью event.preventDefault ...

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

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

Другой вариант - создать настраиваемый ItemRenderer для вашей ячейки данных, но не думайте, что это именно то, что вам нужно, так как вам нужно сделать это для каждой из ваших ячеек.

2 голосов
/ 10 марта 2009

на самом деле это лучше всего сделать через "itemEditBeginning". Ищите здесь хороший учебник: текст ссылки

0 голосов
/ 13 января 2010

Просто установите функцию для "itemEditBegin" DataGrid, которая делает что-то вроде этого:

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 должна быть редактируемой, чтобы это работало.

Это должно сработать.

0 голосов
/ 19 февраля 2009

Алекс Харуи приводит хороший пример с источником здесь http://blogs.adobe.com/aharui/2007/06/disabling_list_selection.html Это довольно длинное решение, но оно охватывает взаимодействие мыши и клавиатуры с сеткой данных. Я согласен с вами, удивительно, что для этого нет «встроенного» метода.

...