Пользовательский элемент рендеринга в Datagrid с Datatip - PullRequest
2 голосов
/ 26 августа 2009

У меня есть сетка данных с одной колонкой данных. Без специального средства визуализации элементов я могу использовать функцию datatip для отображения настраиваемой подсказки данных, но теперь я хочу, чтобы пользовательский элемент визуализации отображал строки по-другому. Поэтому я расширил метку и изменил метод данных, но теперь моя функция данных больше не работает.

Есть идеи?

заранее спасибо

Себастьян

Ответы [ 4 ]

1 голос
/ 02 июня 2014

копирование содержимого ссылки, предоставленной cbranch здесь. stackoverflow более надежен для хранения фрагментов кода

Отображение подсказок при использовании itemRenderer

Одна из плохих вещей при использовании itemRenderers в DataGridColumn заключается в том, что вы теряете функцию dataTip, которую он обычно предоставляет. Ну, вот способ подделать эту функциональность.

Сначала добавьте dataTipField или dataTipFunction в DataGridColumn, как обычно.

<mx:DataGridColumn  headerText="DataTip"
      dataField="name1"
      showDataTips="true"
      dataTipField="description1" />

Затем в свой itemRenderer добавьте следующий код, чтобы иметь возможность подключиться к этой информации и вместо этого отобразить всплывающую подсказку.

private function getToolTip():String{
    var dg:DataGrid = listData.owner as DataGrid;
    var func:Function = dg.columns[listData.columnIndex].dataTipFunction;
    if(func != null){
           return func.call(this, this.data);
    }else if(dg.columns[listData.columnIndex].dataTipField.length){
           return data[dg.columns[listData.columnIndex].dataTipField];
    }else{
           return "";
     }
 }

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
     super.updateDisplayList(unscaledWidth, unscaledHeight);
     this.toolTip = getToolTip();
  }

Это работает как с dataTipFields, так и с dataTipFunctions и позволяет обрабатывать подсказки data в ваших столбцах одинаково, независимо от того, используете ли вы itemRenderer или нет. Единственным небольшим отличием является расположение метки, но это можно легко изменить с помощью стилей. Вы можете скачать полный исходный код здесь, для функционального примера того, как это работает.

источник

1 голос
/ 19 апреля 2010

Я знаю, что этот вопрос немного устарел, однако я столкнулся с той же проблемой и решил ее, посмотрев, как это делает стандартный класс DataGridItemRenderer.

Таким образом, в итоге я скопировал эту функцию toolTipShowHandler () в мой класс (без каких-либо изменений), реализовал интерфейс IDropInListItemRenderer и добавил несколько строк в функцию commitProperties () моего рендерера, вдохновленную также DataGridItemRenderer. 1003 *

Надеюсь, это поможет.

1 голос
/ 24 января 2012

Я немного опоздал на вечеринку, но столкнулся с этой проблемой с пользовательским DataGridItemRenderer для изображений. Решение, описанное по следующей ссылке, сработало для меня:

http://www.kalengibbons.com/blog/index.php/2008/12/displaying-datatips-when-using-an-itemrenderer/

Суть в том, что вы переопределяете метод updateDisplayList () рендера элементов и устанавливаете всплывающую подсказку, вызывая функцию dataTipFunction и / или используя dataTipField, как встроенный рендер.

0 голосов
/ 27 августа 2009

Возможно, заставьте свой рендерер элементов расширять DataGridColumn. Это даст вашему средству визуализации все функции обычного столбца.

...