Comunidad de diseño web y desarrollo en internet online

Celda Cellrender con Datagrid

Citar            
MensajeEscrito el 13 May 2008 04:15 pm
Saludos...que buena comunidad esta!!! :) Llevo poco y gracias a cristalab todo avanza mas rapido

Bueno os comento el problema que tengo,

He creado un datagrid que tiene dos columnas una es una imagen y la otra es un texto multilinea, y la cuestion esta en este segundo punto quiero resaltar en negrita una linea del texto.

no tengo ni la mas minima idea debe haber algo simple pero son muchos conceptos en muy poco tiempo esto es lo que tengo echo:

Para la imagen he creado un MC vacio al que simplemente le asigno la imagen y para la columna multilinea uso esta clase:

Código :

// ActionScript 2.0 class.
class HtmlCellRenderer extends mx.core.UIComponent
{
    private var multiLineLabel; // La etiqueta que se va a utilizar para el texto.
    private var owner; // La fila que contiene esta celda.
    private var listOwner; // La lista, cuadrícula de datos o árbol que contiene esta celda.

    // Desplazamiento de la altura de la celda con respecto a la altura de la fila total y la anchura de celda preferida.
    private static var PREFERRED_HEIGHT_OFFSET = 4; 
    private static var PREFERRED_WIDTH = 100;
    // Profundidad inicial.
    private var startDepth:Number = 1;


    // Constructor. Debe estar vacío.
    public function HtmlCellRenderer()
    {
    }

    /* UIObject espera que llene createChildren creando instancias de todos los elementos de clip de película que podría necesitar tras la inicialización. En este caso vamos a crear una etiqueta*/
    public function createChildren():Void
    {
        // El método createLabel es un método útil de UIObject y una forma cómoda
        // de crear etiquetas en componentes.
        var c = multiLineLabel = this.createLabel("multiLineLabel", startDepth);
        // Vincula el estilo de la etiqueta al estilo de la cuadrícula
        c.styleName = listOwner;
        c.selectable = false;
        c.tabEnabled = false;
        c.background = false;
        c.border = false;
        c.multiline = true;
        c.wordWrap = true;
    }

    public function size():Void
    {
/* Si se amplía UIComponent, que importa UIObject, se obtiene setSize automáticamente; no obstante, UIComponent espera que se implemente size(). Suponga que __width y __height se establecen ahora. Va a ampliar la celda para adaptarla a rowHeight. rowHeight es una propiedad del componente de tipo lista en el que estamos procesando una celda. Como queremos ajustar el valor de rowHeight en dos líneas, al crear el componente de tipo lista con esta clase cellRenderer, asegúrese de que el valor de su propiedad rowHeight es suficientemente grande para que dos líneas de texto puedan representarse en ella.*/
    
/*__width y __height son las variables subyacentes de los captadores/definidores .width y .height.*/
        var c = multiLineLabel;
        c.setSize(__width, __height);
    }

    // Proporciona la altura preferida de la celda. Método heredado.
    public function getPreferredHeight():Number
    {
/* Se asigna a la celda una propiedad, "owner", que hace referencia a la fila. Es siempre preferible que la celda ocupe la mayor parte de la altura de la fila. En este caso mantendremos la celda ligeramente más pequeña.*/
        return owner.__height - PREFERRED_HEIGHT_OFFSET;
    }

    // Lo llama el propietario para establecer el valor en la celda. Método heredado.
    public function setValue(suggestedValue:String, item:Object, selected:Boolean):Void
    {
/* Si el elemento no está definido, no debe procesarse nada en la celda, y esta etiqueta debe establecerse como invisible. Nota: para el desplazamiento de componentes de tipo List, como una cuadrícula de datos con desplazamiento, las celdas se vacían cuando dejan de estar visibles y a continuación se reutilizan y se les asigna un nuevo valor, lo que produce un efecto animado de desplazamiento. Por esta razón, no puede dar por supuesto que una celda siempre tendrá datos o mostrará siempre el mismo valor.*/
        if (item!=undefined){
            multiLineLabel.text._visible = false;
        }
        multiLineLabel.text = suggestedValue;
    }
    // función getPreferredWidth :: sólo para menús y encabezados de cuadrícula de datos
    // función getCellIndex :: no se usa en este procesador de celdas
    // función getDataLabel :: no se usa en este procesador de celdas
}


Lo que yo quiero que salga en la columna del data grid es simple algo como esto:
//////////////
Ejemplo
texto del ejemplo
////////////

Asi quiero que aparezca dentro de la celda del datagrid cualquier sugerencia sera buena soy muy novato.

Para cargar los datos uso Php y le asigno un dataprovider al datagrid pero bueno no quiero complicar mucho la pregunta. Haber si con esto me entendeis y puedo desatascarme mil gracias de antemano.

Por juanmi_gr

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 May 2008 05:47 pm
El HtmlCellRenderer original (el de Phil) permite recibir texto HTML y darle formato con tags HTML, esta parece una variación "sui generis" basada en un label. Pillate mejor el original, mira el ejemplo: http://philflash.inway.fr/dghtmlrd/dghtmlrd.html

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 May 2008 01:15 pm
Muchas gracias jorge

Por juanmi_gr

6 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.