2017-05-08 11 views
0

私はsyncfusion iOSデータグリッドに表示したい従業員のデータを持っています。データテーブルのフィールドの1つは、従業員の写真を含む写真フィールドです。私の問題は、写真ではなく、グリッドのこの写真の列にはSystem.Byte[]しか表示されないということです。Syncfusionデータグリッドは写真を表示できません

私は何とかGridAutoGeneratingColumnsイベントの列をフォーマットする必要がありますが、私はそこに到達していないと思います。私は `xamarin.iosとC#を使用しています。ありがとう。

答えて

0

あなたの要件は2つの方法で達成できます。古いバージョンのSfDataGridを使用している場合は、GridTextColumn.UserCellTypeプロパティを使用してSfDataGridにイメージをロードできます。そうでない場合は、SfDataGridを最新バージョン(15.2.0.40)に更新し、GridImageColumnを使用してイメージをSfDataGridにロードできます。イメージのビルドアクションは、EmbeddedResourceまたはBundleResourceのいずれかでなければなりません。

GridTextColumn.UserCellTypeプロパティを使用してイメージをロードするには、次のコード例を参照してください。

GridTextColumn customerImageColumn = new GridTextColumn(); 
customerImageColumn.UserCellType = typeof(GridImageCell); 
customerImageColumn.MappingName = "CustomerImage"; 
customerImageColumn.HeaderText = "Image"; 

//GridImageCell.cs 
public class GridImageCell : GridCell 
    { 
     private UIImageView imageview; 
     CoreGraphics.CGRect framespec = new CoreGraphics.CGRect(); 

     public GridImageCell() 
     { 
      imageview = new UIImageView(); 
      this.CanRenderUnLoad = false; 
     } 

     protected override void UnLoad() 
     { 
      this.RemoveFromSuperview(); 
     } 

     public override void LayoutSubviews() 
     { 
      base.LayoutSubviews(); 
      if (imageview.Superview == null) 
      { 
       this.AddSubview(imageview); 
       framespec = new CoreGraphics.CGRect(20, 3, 60, (nfloat)DataColumn.Renderer.DataGrid.RowHeight - 5); 
      } 

      imageview.Frame = framespec; 
      imageview.Image = (UIImage)DataColumn.RowData.GetType().GetProperty("CustomerImage").GetValue(DataColumn.RowData); 
     } 
} 

GridImageColumnを使用してイメージをロードするには、次のコード例を参照してください。

GridImageColumn customerImageColumn = new GridImageColumn(); 
customerImageColumn.MappingName = "CustomerImage"; 
customerImageColumn.HeaderText = "Image"; 

// Model class - The type of the “CustomerImage” should be UIImage 
public UIImage CustomerImage 
{ 
    get 
    { 
     return customerImage; 
    } 
    set 
    { 
     customerImage = value; 
    } 
} 

// Repository class – the image should be set to the “CustomerImage” property as highlighted 
public List<OrderInfo> GetBankDetails(int count) 
{ 
    List<OrderInfo> bankDetails = new List<OrderInfo>(); 

    for (int i = 1; i <= count; i++) 
    { 
     var ord = new OrderInfo() 
     { 
      CustomerID = i, 
      BranchNo = BranchNo[random.Next(15)], 
      Current = CurrentBalance[random.Next(15)], 
      Savings = Savings[random.Next(15)], 
      CustomerName = Customers[random.Next(15)], 
      BalanceScale = random.Next(1, 100), 
      IsOpen = ((i % random.Next(1, 10) > 2) ? true : false), 
      CustomerImage = Imagehelper.ToUIImage(new ImageMapStream(LoadResource("Image1.png").ToArray())), 
      Transactions = random.Next(80) 
     }; 
     bankDetails.Add(ord); 
    } 
    return bankDetails; 
} 
+0

ありがとう – Vssantos7

関連する問題