2011-06-12 88 views
0

我有許多縮略圖圖像(長度爲8K),存儲在sqlite數據庫中,編碼爲base64字符串。如何將圖像從sqlite顯示到flex數據網格中

我想找回這些圖像,並提交到一個DataGrid

從數據庫工程信息檢索(從DB一些其他信息),但我不能完全「看」如何連接從數據庫解碼結果到數據網格,顯示圖像。

下面是一些代碼,我在那裏展示(把事情簡單化)一個簡單的DGrid並希望使用數據提供程序指向選擇從DB

的任何細節,以顯示我需要如何改變這種代碼會不勝感激:-)

<mx:DataGrid id="dg2" dataProvider="{dp2}"> 
    <mx:columns> 
     <mx:DataGridColumn headerText="Image" dataField="image" width="150"/> 
    </mx:columns> 
    </mx:DataGrid> 

生成dp2信息的代碼如下。 result2數組按預期填充,並且ldr似乎已填充,但imageBMap和(因此)dp2爲空。

sql2.text = "SELECT image FROM bookMarks;"; 
    sql2.execute(); 

    var result2:SQLResult = sql2.getResult();   
    var data2:Array = result2.data; 

    var base64Dec:Base64Decoder; 
    var byteArr:ByteArray; 
    var bmap:Bitmap; 
    var ldr:Loader = new Loader(); 
    base64Dec = new Base64Decoder(); 


    if(result2.data != null) 
    { 
     var numRows:int = result2.data.length; 

     for(var i:int = 0; i < numRows; i++) 
     {  
     for(var columnName:String in result2.data[i]) 
     { 
      if(columnName == "image") // Normally there will be more than 1 column in the select, hence this check 
      { 
      base64Dec.decode(result2.data[i][columnName]); 
      byteArr = base64Dec.toByteArray();     
      ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete);     
      ldr.loadBytes(byteArr); 
      } 
     } 
     } 
    } 
    var imageBMap:Bitmap = Bitmap(ldr.content); 
    dp2 = ArrayCollection(imageBMap); 
    } 

    private function loaderComplete(event:Event):void 
    { 
    var loaderInfo:LoaderInfo = LoaderInfo(event.target); 
    var bitmapData:BitmapData = new BitmapData(loaderInfo.width, loaderInfo.height, false, 0xFFFFFF); 
    bitmapData.draw(loaderInfo.loader);   
    } 

回答

0

您需要使用的itemRenderer顯示圖像:

<mx:DataGridColumn headerText="Image" width="150"> 
    <mx:itemRenderer> 
     <fx:Component> 
      <s:Image source="{here you put the dataProvider}"> 
     </fx:Component> 
    </mx:itemRenderer> 
</mx:DataGridColumn> 
+0

感謝和理解。 但是,imageBMap(因此dp2)爲空,我不知道如何更正代碼。 byteArr似乎很好,我相信ldr也是如此。 – user427196 2011-06-12 12:21:31

相關問題