天天看點

在DevExpress GridControl的一列中顯示圖檔

        最近做項目的時候用到了将gridcontrol中一列設定為pictureedit類型,然後通過這一列來顯示圖檔。經過嘗試發現有以下兩種方式可行。

方法一、知道圖檔的路徑與名稱

        比如:在資料庫中存儲了圖檔的路徑(包括:本地路徑、伺服器路徑),那麼在可以通過非綁定列的方式來實作。

1、建立了一個非綁定列并設定其相應的屬性,屬性設定如下:

        fieldname設為 photo(該字段名必須是唯一的)

在DevExpress GridControl的一列中顯示圖檔

        unboundtype設為 unboundcolumntype.object

        columnedit設為repositoryitempictureedit類的執行個體(該操作pictureedit 為該列的内置編輯器)

在DevExpress GridControl的一列中顯示圖檔

        2.、添加gridview的customunboundcolumndata事件,用于為非綁定列填充資料。

在DevExpress GridControl的一列中顯示圖檔

        既然已經設定完成了,那麼具體的代碼怎麼編寫呢?具體代碼如下:

如果圖檔在單元格中顯示有問題的話,可以調整  

在DevExpress GridControl的一列中顯示圖檔

方法二、知道圖檔的路徑與名稱

        除了方法一之外,我們還可以使用流的方式的來加載圖檔,即根據圖檔路徑将圖檔轉化為流,然後直接綁定到repositoryitempictureedit列上即可。此時不需要修改列的綁定類型,隻需要該列的fieldname與資料源中的byte[]流的所在列的名稱一緻即可,

        如果這麼綁定無效的話,可以在gridcontrol的資料源(此處假設為dataset)中新增一列

        然後,根據路徑加載圖檔到photo列中,

     其中,可能會用到的函數如下:

小注:

使用以上方法,快速滑動滑動條的時候,會出現卡死的現象,因為上述代碼是每次實時讀取圖檔資源的,應該加入一個圖檔路徑、圖檔 字典,以減少圖檔的重複讀取。