Я хочу расширить компонент DataGrid так, чтобы был столбец (только для чтения) для номера строки, как вы видите в электронных таблицах. Я столкнулся с этой статьей http://www.cflex.net/showFileDetails.cfm?ObjectID=735, но это зависит от уникальных данных для каждой строки, чтобы она могла индексироваться в массив. Если данные не уникальны (например, для пустой сетки), это не работает. Как я могу это реализовать?Flex DataGrid с номером номера строки
2
A
ответ
-1
Я был в состоянии сделать это путем реализации пользовательских ItemRenderer, RowNumberRenderer.as
package com.domain
{
import mx.collections.IList;
import mx.controls.Label;
import mx.controls.listClasses.ListBase;
public class RowNumberRenderer extends Label
{
public function RowNumberRenderer()
{
super();
}
override public function set data(value:Object):void
{
super.data = value;
this.text = String(IList(ListBase(listData.owner).dataProvider).getItemIndex(data) + 1);
}
}
}
0
убедитесь, что dataProvider имеет уникальный столбец или свойство, а затем не показывать этот столбец/свойство, если вы не хотите. Ключ DataProvider
-1
как о следующем:
RendererRowIndexPlusOne.as
package
{
import mx.controls.Label;
import mx.utils.StringUtil;
import mx.utils.ObjectUtil;
public class RendererRowIndexPlusOne extends Label
{
public override function set data(item:Object):void {
super.data = item;
trace('listData.label ' + listData.label);
trace('listData.rowIndex ' + listData.rowIndex);
trace('listData.columnIndex ' + listData.columnIndex);
trace('listData.owner ' + listData.owner);
text = String(listData.rowIndex + 1);
}
}
}
2
Это работает для меня:
<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.controls.AdvancedDataGrid;
private var handleDataChangedEnabled:Boolean = false;
override public function set data(value:Object):void {
super.data = value;
if (!handleDataChangedEnabled) {
addEventListener("dataChange", handleDataChanged);
}
}
public function handleDataChanged(event:Event):void {
this.text = String(listData.rowIndex + (listData.owner as AdvancedDataGrid).verticalScrollPosition + 1);
}
]]>
</mx:Script>
Конечно, вам нужно будет изменить AdvancedDataGrid на DataGrid.
Cheers.
0
Просто использовать этот класс в качестве ItemRenderer: RowNumColumnRenderer.as
package
{
import mx.collections.IList;
import mx.controls.AdvancedDataGrid;
import mx.controls.Label;
import mx.controls.listClasses.ListBase;
public class RowNumColumnRenderer extends Label
{
override public function set data(value:Object):void
{
super.data = value;
if (listData != null)
this.text = (AdvancedDataGrid(listData.owner).itemRendererToIndex(this) + 1).toString();
}
}
}
Смежные вопросы
- 1. flex datagrid не присоединяет строки
- 2. Flex mx: индекс строки DataGrid
- 3. Flex DataGrid, заголовки строк строки
- 4. Отключить строки в Flex DataGrid
- 5. Flex - сортировка столбца datagrid по метке строки
- 6. flex air datagrid itemRenderer
- 7. flex: редактирование данных datagrid
- 8. Flex: рендеринг на основе строки в Datagrid
- 9. Добавить новые строки в datagrid flex 4?
- 10. Ошибка Flex DataGrid/DataProvider?
- 11. flex datagrid itemRenderer высота?
- 12. Обновление столбца с номером строки
- 13. Flex Datagrid Column Total
- 14. Запрос Flex DataGrid
- 15. Номер строки с номером строки
- 16. Flex: ввод номера с кнопками
- 17. Advanced DataGrid in flex
- 18. Datagrid for flex mobile
- 19. Transpose Datagrid in Flex
- 20. Элемент управления datagrid Flex с расширяющимися рядами
- 21. Ссылки в Datagrid (flex)
- 22. Настройка Flex datagrid headerText
- 23. Flex Datagrid событие
- 24. Выделение списка Flex DataGrid
- 25. Flex DataGrid компонент проблемы
- 26. Запрос Flex Datagrid
- 27. Flex Datagrid динамически добавляет строки с помощью checkboxex
- 28. Flex 4 искра datagrid выбранная смена строки с вкладкой
- 29. Flex DataGrid ItemRenderer Issue
- 30. Flex Datagrid labelFunction запрос