2010-11-22 24 views
0

DataGridColumn'u genişletme işlemini genişletiyorum ve genişletme sınıfında, paddingLeft için bir değer belirtmek üzere
'u deneyin, ancak bunu derleyemiyorum. Flex Builder 3 KullanılmasıDataGridColumn'u genişletme ve dolgulamayı belirlemeLeft

:

mainApp.mxml:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*"> 
    <mx:DataGrid x="191" y="171"> 
     <mx:columns> 
      <local:DataGridColumnExt headerText="Column 1" dataField="col1"/> 
     </mx:columns> 
    </mx:DataGrid> 
</mx:Application> 

DataGridColumnExt.mxml:

<?xml version="1.0" encoding="utf-8"?> 
<mx:DataGridColumn xmlns="*" xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="10"> 
</mx:DataGridColumn> 

Hata alıyorum: bir referans üzerinden olası tanımlanmamış özelliğinin styleDeclaration ait
Erişim Statik tip DataGridColumnExt ile. [Oluşturulan kodu (kaydetmek için -Herkes kullanın): Yol: DataGridColumnExt-generated.as, Satır: 68, Sütun: 13] DataGridColumnWithLeftPadding Bilinmeyen 1290353024334 24677

cevap

2

Sen dolguyu değiştirmek için DataGridColumn uzatmak gerekmez ve paddingLeft stilini DataGridColumnExt ürününüzde ayarlamaya çalıştığınız için zaten işe yaramadı. DataGridColumn, yalnızca stiller için bir proxy olarak çalıştığı için işe yaramaz. Sütunun öğe oluşturucu, stillerini sütundan alır.

  1. kullanın mx:DataGridColumn ve üzerinde paddingLeft gibi istenilen stilleri ayarlayın: Yani, (aşağıda benim örneğe bakın) yapmaya çalıştıkları şey başarmak için birkaç seçenek vardır. Sütunun öğe oluşturucusu, dolguyu kullanır (örneğimde "Sütun 1'e bakın").
  2. kendi öğe oluşturucusunu oluşturun (() Benim örnekte "Sütun 2" konusuna bakın mx:DataGridItemRenderer uzatmak öğe oluşturucu doğrudan stilleri ayarlamak ve buna göre sütunun itemRenderer özelliğini ayarlayabilirsiniz.
  3. Eğer sık ​​sık kullanmak gerekir bu mantıklı olur aynı stilleri ile aynı kolon (bizim örneğimizde "sütun 3" bölümüne bakınız) kendi DataGridColumn oluşturabilir ve özel bir sütunda içinde itemRenderer ayarlamak için.

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*"> 
    <mx:DataGrid x="191" y="171" dataProvider="{[{value: 'foo'}, {value : 'bar'}]}"> 
     <mx:columns> 
      <mx:DataGridColumn headerText="Column 1" dataField="value" paddingLeft="20"/> 
      <mx:DataGridColumn headerText="Column 2" dataField="value" itemRenderer="ItemRendererWithPadding"/> 
      <local:DataGridColumnExt headerText="Column 3" dataField="value"/> 
     </mx:columns> 
    </mx:DataGrid> 
</mx:Application> 

ItemRendererWithPadding.mxml

<?xml version="1.0" encoding="utf-8"?> 
<mx:DataGridItemRenderer xmlns:mx="http://www.adobe.com/2006/mxml" paddingLeft="20"> 
</mx:DataGridItemRenderer> 

DataGridColumnExt.as

package 
{ 
    import mx.controls.dataGridClasses.DataGridColumn; 
    import mx.core.ClassFactory; 

    public class DataGridColumnExt extends DataGridColumn 
    { 
     public function DataGridColumnExt(columnName:String = null) 
     { 
      super(columnName); 
      itemRenderer = new ClassFactory(ItemRendererWithPadding); 
     } 
    } 
}